在pygame中沿椭圆路径动画化精灵

4 投票
1 回答
2079 浏览
提问于 2025-04-15 22:43

这是在 Python 2.6 上运行的 pygame 1.9。

这里有一张截图,展示了我“游戏”中当前绘制的内容,给大家提供一些背景信息。这里是代码。

我想做的是让月球围绕地球转(我并不是想做一个真实的模拟,只是想利用这个设定来玩玩,学习 pygame)。这其实就是两个圆圈,还有月球围绕地球的椭圆轨道。我的最终目标是让月球沿着轨道运动,但我想以后能用键盘控制来调整月球轨道的形状。

我现在主要需要帮助的是如何让月球沿着这条路径移动,其他的我应该能自己搞定。

1 个回答

5

这里是如何在椭圆上生成点的方法:

for degree in range(360):
    x = cos(degree * 2 * pi / 360) * radius * xToYratio
    y = sin(degree * 2 * pi / 360) * radius

(x,y) 这个点会沿着一个以 (0,0) 为中心的椭圆移动,y轴的半径是 radius,x轴的半径是 xToYratio。在你的情况下,可能想让 degree 和时间的流逝有某种关系。

补充说明:你也可以这样做:

for degree in range(360):
    x = cos(degree * 2 * pi / 360) * xRadius
    y = sin(degree * 2 * pi / 360) * yRadius

这里 xRadius 是你矩形宽度的一半,yRadius 是矩形高度的一半。想象一下这个过程 - 你有一个圆,然后把它拉伸(也就是放大,或者说乘以一个数),让它在水平和垂直方向上都和矩形一样大。

撰写回答