Python Pygame处理动画的角度和速度

2024-06-01 09:48:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Pygame,并且和大多数人一样(我认为)正在编写一个小游戏来掌握它。话虽如此,请尽管回答我的问题,也可以批评任何不好的地方。在

所以,问题出在我的“老板”对象上。它应该从上方进入游戏,然后开始在360度的圆圈内随机发射几次子弹。它有时是有效的,但我注意到了一些我没料到的事情。1) 子弹应该以恒定的速度移动,但随着时间的推移,它们似乎变慢了,而且在Y平面上的移动速度比X快。2)尽管最少有8发子弹,但我经常只看到3-4发子弹(相当肯定有些子弹是重叠的,因为我经常看到一个子弹看起来更大一些),有些子弹会朝下,向右,一个射进去相反的方向。它不应该那样做。所以,这是密码。我会发布射击计算,然后是子弹(火球)实例。从我所看到的来看,其余的都是很典型的。我通过调用它们所在的精灵组来更新和绘制,该组在主循环的底部被调用。在

def shoot (self, shots, time_passed):

    angle = (math.pi*2)/shots
    for i in xrange(shots):
        bullet = Fireball("fireball.png", self.direction, 100)
        bullet.angle = angle
        bullet.pos = ((math.sin(bullet.angle) * bullet.speed) * time_passed,
                      (math.cos(bullet.angle) * bullet.speed) * time_passed)
        Fireball.container.remove(bullet)
        EnemyFireball.container.add(bullet)
        bullet.rect.center = self.rect.center
        angle += angle

这是子弹:

^{pr2}$

如果我可以画一幅画。。。0<;--boss,子弹线。在

我期望的是:

\|/  
-0-  
/|\

我看到的是:

\  
 0-  
 |\  

。。。子弹直下总是看起来更大,所以我觉得有些重叠,但我不明白为什么。经过的时间是时钟滴答声(60),shots参数是8-16之间的随机数。在

我希望这一切都有意义。如果没有,请告诉我。我会尽力澄清的。提前谢谢你的帮助。在

如果需要更多上下文,这里有一个指向源代码的链接。别担心,没什么。http://code.google.com/p/scroller-practice/source/browse/


Tags: rectselftimecontainer时间math速度speed
1条回答
网友
1楼 · 发布于 2024-06-01 09:48:12

你需要保持两个变量的角度。在

正确的方法是

curr_angle = 0
angle_step = (math.pi*2)/shots

然后在每个循环的末尾

^{pr2}$

用这种方法,你得到了角度角,然后是2*角,然后是4*角等等。在

如果你去掉所有其他部分,只需要一个循环

angle = (math.pi*2)/shots
for i in xrange(shots):
    angle += angle 

应该很清楚,你每次都是把角度加倍,而不是增加它。在

相关问题 更多 >