2010-05-14 159 views
4

这是pygame的1.9 Python的2.6 ..动画pygame的精灵

这里是什么,目前正在我的“游戏”抽给一些上下文screenshot。代码是Here。它应该是环绕地球的月球轨道(我不是想做一个真实的模拟或任何其他的东西,我只是使用这个设置来玩弄和学习pygame)。它是2个圆圈,卫星绕地球椭圆轨道。我的最终目标是让月球跟随它绕地球轨道运动,但我想稍后使用键盘控制来调整月球轨道的形状。

我真的只是需要帮助弄清楚如何让月亮跟随路径,我可能会找出其他的方法。

回答

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是你rects高度的一半。直观地显示它 - 你有一个圆圈,并且伸展它(即缩放它,即乘以它),使它与水平和垂直矩形一样大。

+0

我认为通常我需要做的,但我的问题的一部分是我不知道如何找到椭圆的半径,因为我通过使用Rect类定义椭圆(请参阅我的代码)。 – Danny 2010-05-15 22:54:08

+0

@Danny:我已经更新了答案以适合您的需求 – Claudiu 2011-03-07 23:20:51

+0

这可能会很方便,不会以度数工作......如果您有许多精灵,并且您每次打勾都调用一次更新函数,度数为整合非常混乱。如果任何人想要,我会发布一个版本,这种方式一旦我编写代码。 – 2014-12-06 00:51:19