Pygame如何摧毁小行星并在其p

2024-06-02 05:33:58 发布

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

我正在制作这个经典风格的小行星游戏,我已经战胜了所有的挑战。现在有一个新的。在

当一颗子弹击中其中一颗小行星时,预期的行为是它消失,然后三到四颗较小的小行星出现在它的位置上,每颗小行星的速度都是随机的,所以看起来像是一种爆炸。但在我刚刚录制的这段视频中,这段奇怪的行为表现了:

https://youtu.be/2ZJvOcB-ZKM

正如你所看到的,它完成了它应该做的90%的事情,小行星的消失,然后我按照它的速度创造了四个新的更小的小行星,但是,由于某些原因,当它们应该表现得像正常的小行星时,它们就会解体,因为它们继承了一切。在

游戏源代码可以在这里找到:https://github.com/JuanBonnett/pysteroids

负责处理碰撞子弹的班级有:

asteroids.py主文件创建所有对象、飞船、小行星生成器和碰撞探测器对象。在

physics.pyCollisionDetector类在哪里,它检测它们何时发生碰撞,并调用它的依赖项来处理碰撞

asteroid.py有一个小行星发生器,在碰撞的地方产生更小的小行星,我称之为碎片。在


Tags: 对象pyhttps游戏视频风格be速度
1条回答
网友
1楼 · 发布于 2024-06-02 05:33:58

当一颗小行星爆炸时,你给它传递一个pos的起始点矢量。在

你将同样的矢量实例应用到所有生成的小行星上。在

所有较小的小行星都有相同的self.pos值,它们来自同一个母小行星。在

它看起来很奇怪,因为self.points属性工作正常,更新/翻译正确,因此您看到两个位置互相争斗,并产生混乱/不可预测的行为。在

基本上问题是pos = _pos中的pos = _pos行。它应该复制一个矢量,而不是直接给新小行星指定参考。在

我发现这一点是通过在小行星渲染代码中打印位置:print(self.pos.x, self.pos.y)。我注意到所有的小行星都有相同的self.pos,但都被假定是随机的速度矢量,所以我认为这可能是一个物体参考问题,并遵循了分配的位置。在

相关问题 更多 >