Pygame-旋转精灵并同时跟随路径

2024-03-28

我正在尝试制作一个被抛出的球的动画,我希望它旋转并同时遵循平滑的抛物线路径。然而,我似乎无法得到pygame.transform.rotate()要合作。

到目前为止,这是我尝试过的:

import pygame
screen = pygame.display.set_mode((500, 500))
timer = pygame.time.Clock()
ball = pygame.sprite.Sprite()
ball.image = pygame.image.load("throwball.png")
ball.image = pygame.transform.scale(ball.image, (48,48))
ball.rect = ball.image.get_rect(topleft = (50,50))
ball.orig_image = ball.image
rotaterect = ball.rect

for i in range(60):
    #pygame.draw.rect(screen, Color(255,255,255), ball.rect)
    ball.image = pygame.transform.rotate(ball.orig_image, i*20)
    rotaterect.topleft = (5*i,((i-20)*(i-20) + 1)/5)
    ball.rect.center = rotaterect.center
    screen.blit(ball.image, ball.rect)
    pygame.display.update()
    timer.tick(60)
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
while 1:
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

Whenever I run the code, the ball moves in an irregular pattern. I made a second rect to try to keep the positioning under control, but the ball ends up forming a path like this: this

显然每个框架的定位都有问题,但我不确定为什么任何框架都会不合适,因为它们的位置是由它们的中心点决定的。

这是球的图像:

它是 16x16(正方形),所以我很惊讶为什么图像没有遵循干净的路径。


请注意,旋转后的图像尺寸会有所不同。看如何使用 Pygame 围绕图像中心旋转图像? https://stackoverflow.com/questions/4183208/how-do-i-rotate-an-image-around-its-center-using-pygame/54714144#54714144.

获取旋转图像的矩形,并将矩形的中心设置为辅助矩形的中心rotaterect。这导致图像围绕中心对称对齐。
你错过了更新ball.rect到旋转图像的实际大小:

ball.rect = ball.image.get_rect()
rotaterect.topleft = (5*i,((i-20)*(i-20) + 1)/5)
ball.rect.center = rotaterect.center

Example:

for i in range(60):
    ball.image = pygame.transform.rotate(ball.orig_image, i*20)
    ball.rect = ball.image.get_rect()
    rotaterect.topleft = (5*i,((i-20)*(i-20) + 1)/5)
    ball.rect.center = rotaterect.center
    screen.blit(ball.image, ball.rect)
    pygame.display.update()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pygame-旋转精灵并同时跟随路径 的相关文章

  • 在 python 的 Visual Studio 工具中按下 ctrl+F5 后,控制台窗口立即关闭

    我已经安装了 Visual Studio 的 Python 工具 但在控制台窗口中看不到输出 就像我在 Visual Studio 中运行 C 控制台应用程序时按以下快捷键时看到的输出一样 F5 开始调试程序并关闭 C 和 Python 中
  • Jquery Smoothscroll 函数 - 如何控制动画速度?

    有人可以帮助我吗 尝试通过我的平滑滚动和控制速度添加 慢 功能 希望能够实现真正的 平滑滚动 以下是代码 document ready function smoothscroll live click function e html bod
  • 无法将 datetime.datetime 与 datetime.date 进行比较

    我有以下代码并收到上述错误 由于我是 python 新手 我无法理解这里的语法以及如何修复错误 if not start or date lt start start date 有一个datetime date 从日期时间转换为日期的方法
  • 一起使用 Argparse 和 Json

    我是 Python 初学者 我想知道 Argparse 和 JSON 是否可以一起使用 说 我有变量p q r 我可以将它们添加到 argparse 中 parser add argument p param1 help x variabl
  • 以编程方式将列名称添加到 numpy ndarray

    我正在尝试将列名称添加到 numpy ndarray 然后按名称选择列 但这不起作用 我无法判断问题是在添加名称时出现 还是在稍后尝试调用它们时出现 这是我的代码 data np genfromtxt csv file delimiter
  • 在 Windows 上将 Word2vec 与 Tensorflow 结合使用

    In 本教程文件 https github com tensorflow models blob master tutorials embedding word2vec py L45通过 Tensorflow 找到以下行 第 45 行 来加
  • 熊猫记忆

    我有冗长的计算 我重复了很多次 因此 我想使用记忆 诸如jug http packages python org Jug and joblib http packages python org joblib memory html 与Pan
  • 别碰我的女人

    我讨厌的一件事迪斯图尔斯 http docs python org distutils 我猜他是邪恶的人 他这样做了 https github com python cpython blob 300dd552b15825abfe0e367a
  • 将具有不同大小的行的数据加载到 Numpy 数组中

    假设我有一个包含如下数据的文本文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 如何将它加载到 numpy 数组中 使其看起来像这样 1 2 3 4 5 0 6 7 8 0 0 0 9 1
  • 如何在python中递归复制目录并覆盖全部?

    我正在尝试复制 home myUser dir1 及其所有内容 及其内容等 home myuser dir2 在Python中 此外 我希望副本覆盖中的所有内容dir2 It looks like distutils dir util co
  • Matplotlib 将颜色图 tab20 更改为三种颜色

    Matplotlib 有一些新的且非常方便的颜色图 选项卡颜色图 https matplotlib org examples color colormaps reference html 我错过的是生成像 tab20b 或 tab20c 这
  • 将参数传递给 __enter__

    刚刚学习 with 语句尤其是这篇文章 http effbot org zone python with statement htm 问题是 我可以传递一个参数给 enter 我有这样的代码 class clippy runner def
  • 从 Apache 运行 python 脚本的最简单方法

    我花了很长时间试图弄清楚这一点 我基本上正在尝试开发一个网站 当用户单击特定按钮时 我必须在其中执行 python 脚本 在研究了 Stack Overflow 和 Google 之后 我需要配置 Apache 以便能够运行 CGI 脚本
  • 向伪 shell (pty) 发出命令

    我尝试使用 subprocess popen os spawn 来运行进程 但似乎需要伪终端 import pty master slave pty openpty os write master ls l 应该发送 ls l 到从属终端
  • SpaCy 中的自定义句子边界检测

    我正在尝试在 spaCy 中编写一个自定义句子分段器 它将整个文档作为单个句子返回 我编写了一个自定义管道组件 它使用以下代码来执行此操作here https github com explosion spaCy issues 1850 但
  • scrapy python 请求未定义

    我在这里找到了答案 code for site in sites Link site xpath a href extract CompleteLink urlparse urljoin response url Link yield Re
  • Python“self”关键字[重复]

    这个问题在这里已经有答案了 我是 Python 新手 通常使用 C 最近几天开始使用它 在类中 是否需要在对该类的数据成员和方法的任何调用前添加前缀 因此 如果我在该类中调用方法或从该类获取值 我需要使用self method or sel
  • Melt() 函数复制数据集

    我有一个这样的表 id name doggo floofer puppo pupper 1 rowa NaN NaN NaN NaN 2 ray NaN NaN NaN NaN 3 emma NaN NaN NaN pupper 4 sop
  • 字母尺度和随机文本上的马尔可夫链

    我想使用 txt 文件中的一本书中的字母频率生成随机文本 以便每个新字符 string lowercase 取决于前一个 如何使用马尔可夫链来做到这一点 或者使用每个字母都有条件频率的 27 个数组更简单 我想使用来自的字母频率生成随机文本
  • bool() 和operator.truth() 有什么区别?

    bool https docs python org 3 library functions html bool and operator truth https docs python org 3 library operator htm

随机推荐

  • Mongoose:Coffeescript 中的递归嵌入文档

    基于这个例子 https github com LearnBoost mongoose blob master examples schema js 有效 var Comment new Schema Comment add title t
  • 禁用 JFrame 中的背景绘制以正确显示 Aero (DWM) 效果

    我在 Java Windows 上使用 Windows Vista 7 的 DWM 功能时遇到问题 我想让我的框架背景使用 Aero 风格 执行此操作的 Windows API 由函数提供DwmExtendFrameIntoClientAr
  • 播放音频 iOS Objective-C

    我正在尝试在我的 iOS 应用程序中播放音频文件 这是我当前的代码 NSString soundFilePath NSString stringWithFormat test m4a NSBundle mainBundle resource
  • 如何在 iOS 7 中让 NSTimer 在后台运行超过 180 秒?

    我已经尝试过 但在 iOS 7 和 Xcode 4 6 2 中工作时间不超过 180 秒 请帮我 UIBackgroundTaskIdentifier bgTask UIBackgroundTaskInvalid UIApplication
  • 存储对相机胶卷图像的引用 - Swift 4

    我有一个非常简单的要求 但显然超出了我的能力范围 我想做的就是允许用户从相机胶卷中选择图像 然后在我的应用程序中存储对该图像的 引用 然后 我可以在需要时从相机胶卷中加载图像 我不想复制图像并将其保存在其他地方 因为我觉得这会浪费手机上的空
  • 如何为 Go 服务器应用程序设置 Let's Encrypt

    我有自己的域 其中包含用 Go 编写的 Web 服务 我使用内置的 Go Web 服务器 前面没有 Nginx 或 Apache 我想开始通过 HTTPS 提供服务 并且我意识到 Let s Encrypt 即将成为实现这一目标的方法 谁能
  • 为什么 C++17 中的全局内联变量和静态内联成员需要防护?

    从 C 17 开始 可以使用以下命令初始化标头中的全局变量和静态成员inline关键词 虽然我理解为什么函数中的静态变量需要受到保护 因为即使在多线程上下文中初始化也应该只发生一次 但我不明白为什么这些新的内联变量也受到保护 您可以在这里看
  • 使用实体框架数据模型添加验证属性

    前言 2015 年 2 月如果您仍在使用实体框架 EDMX 请帮自己一个忙 并使用实体框架代码优先进行结账 不同之处在于 您的表是从模型类创建的 而不是在 EDMX 中 模型类是使用表创建的 这是一个更简单的解决方案 而且这个问题中的问题甚
  • 如何从exe中找出目标框架名称和版本?

    我有一些使用 net Framework 4 5 或 net core 2 1 或 net core 3 1 创建的 exe 文件 我想仅使用 C 应用程序从此 DLL 获取框架名称和版本信息 我在下面编写了一段代码 该代码非常有用 并且适
  • 使用 Nodejs 和 Express 进行视频流传输

    我正在尝试使用nodejs 和express 将视频流式传输到html5 视频播放器 据我所知 很多人以前都这样做过 但是很少有人使用过express 在我发现的情况下 大多数人说这样做 var express require expres
  • EBCDIC 十六进制字符串的 Python 字节表示

    我有一个十六进制字符串 Hex E388854083969497A4A38599408881A2409985829696A38584408699969440814082A48783888583924B 作为字节对象 它看起来像这样 b xe
  • 如何将 Char 转换为 Int?

    所以我有一个String看起来像的整数 82389235 但我想迭代它以将每个数字单独添加到MutableList 然而 当我按照我认为的方式处理它时 var text 82389235 for num in text numbers ad
  • JavaScript 中的“name”关键字是什么?

    当我输入这段看似无辜的代码片段时 values name gedit 突出显示name作为关键字 然而 name未由链接到的页面列出关于保留关键字问题的答案 https stackoverflow com questions 26255 r
  • 检查文件中是否存在一行

    如何检查文件中是否存在一行 如果该行不存在 我还想将该行写入该文件 这是我目前的尝试 logfile open ip log a while 1 line logfile readline line replace n print line
  • 定义派生类型数组

    我正在尝试使用参数声明初始化派生类型 当我编译时 出现以下错误 1 处的 INTEGER 4 数组构造函数中的元素是 CHARACTER 1 用户定义的种类值ip and dp被发现于fasst global 他们是 integer par
  • WCF服务超时

    我有一个公开 wcf 服务的插件 如果我使用 WCStorm 测试此服务 一切正常 我立即得到答复 当我尝试使用加载插件的应用程序中的服务时 我会超时 ProgrammingMaster ServiceClient aClient new
  • 类型错误:中间件不是函数

    我正在尝试在我的reactjs 应用程序中应用redux 由于这些错误 我无法继续 我确信我已经安装了我需要的所有依赖项 这是我的 package json 的相关部分 dependencies react redux 5 0 6 redu
  • 安装其他package.json依赖项

    简单的问题 是否可以在 package json 中引用另一个 package json 并安装其依赖项 谢谢 是的 这是可能的 并且这是由以下自动完成的npm install 如果你有pkg a这取决于pkg b 包括pkg a在您的依赖
  • 在 python 中快速/优化 N-gram 实现

    python 中哪种 ngram 实现速度最快 我试图分析 nltk 与 scott 的 zip http locallyoptimal com blog 2013 01 20 elegant n gram Generation in py
  • Pygame-旋转精灵并同时跟随路径

    我正在尝试制作一个被抛出的球的动画 我希望它旋转并同时遵循平滑的抛物线路径 然而 我似乎无法得到pygame transform rotate 要合作 到目前为止 这是我尝试过的 import pygame screen pygame di