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

4

这是在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是矩形高度的一半。直观地想象一下-你有一个圆形,并将其拉伸(即缩放,即乘以)使其在水平和垂直方向上与矩形一样大。


我认为这通常是我需要做的事情,但我的问题之一是我不确定如何找到椭圆的半径,因为我使用Rect类来定义椭圆(请参见我的代码)。 - Daniel
或许不使用角度来工作会更方便。如果你有许多精灵(sprites),并且每个时刻都需要在它们上面调用一次更新函数,那么角度会让整合变得非常混乱。如果有需要的话,我可以在编写代码后发布一个可以解决这个问题的版本。 - trevorKirkby
度和其他什么之间有什么区别? - Claudiu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接