如何使用 Pygame 快速更新 Sprite 位置
How to update Sprite position quickly with Pygame
我最近正在使用 Pygame 构建一个模拟工具。对于这个模拟器,我展示了一个领域和一个穿越它的机器人。模拟器的工作方式是将 Pose2D
(坐标)对象的列表输入到主循环中,机器人会在循环的每次迭代中将自己呈现在新位置。机器人必须遵循一些路径,这些路径到目前为止只是直线,但很快也会扩展到样条曲线。为了遵循这些线,我取点之间的距离,得到距离和斜率,然后将距离除以每条线的步长或更新大小。步长是机器人沿着路径更新位置的次数。我注意到更多的更新会减慢整个 window 并导致机器人在田野上缓慢移动,而更新大小更小,机器人移动得更快。但是,我感觉这种方法对于平滑运动来说效率非常低,并且由于 Pygame 在某种程度上依赖于硬件,因此需要调整每个人的系统才能以相同的 fps 运行 或更新机器人以同样的速度。有没有一种方法可以使系统正常化并提高渲染速度,同时以相当快的速度更新?
您可以在此处查看 trajectory.py and it being passed into the main.py 中生成的列表。随意浏览存储库以获取您可能有的任何其他建议。提前致谢!
因此对于这个问题,代码的当前设置最终变得严重依赖于 CPU 的循环时间。为了解决这个问题,增量时间变量应该乘以速度,然后应该添加到精灵的当前坐标位置。
我最近正在使用 Pygame 构建一个模拟工具。对于这个模拟器,我展示了一个领域和一个穿越它的机器人。模拟器的工作方式是将 Pose2D
(坐标)对象的列表输入到主循环中,机器人会在循环的每次迭代中将自己呈现在新位置。机器人必须遵循一些路径,这些路径到目前为止只是直线,但很快也会扩展到样条曲线。为了遵循这些线,我取点之间的距离,得到距离和斜率,然后将距离除以每条线的步长或更新大小。步长是机器人沿着路径更新位置的次数。我注意到更多的更新会减慢整个 window 并导致机器人在田野上缓慢移动,而更新大小更小,机器人移动得更快。但是,我感觉这种方法对于平滑运动来说效率非常低,并且由于 Pygame 在某种程度上依赖于硬件,因此需要调整每个人的系统才能以相同的 fps 运行 或更新机器人以同样的速度。有没有一种方法可以使系统正常化并提高渲染速度,同时以相当快的速度更新?
您可以在此处查看 trajectory.py and it being passed into the main.py 中生成的列表。随意浏览存储库以获取您可能有的任何其他建议。提前致谢!
因此对于这个问题,代码的当前设置最终变得严重依赖于 CPU 的循环时间。为了解决这个问题,增量时间变量应该乘以速度,然后应该添加到精灵的当前坐标位置。