Pygame Missile Coll

时间:2016-07-03 22:14:18

标签: python pygame

所以基本上lead_x和lead_y是一个东西的坐标,MineX和MineY也是如此。

if lead_x > XMine and lead_x < XMine + MineThickness:
    if lead_x + block_size > XMine and lead_x + block_size < XMine + MineThickness:
        if lead_y > YMine and lead_y < YMine + MineThickness:
            gameOver = True

基本上我想创造一种寻热导弹的东西。上面的代码应该处理冲突。

然而,碰撞真的很不好。有时它会抓住它,有时候却没有。

这是上面的代码,用于使物体充当寻找导弹:

gameDisplay.blit(mine, (XMine, YMine))
if lead_x > XMine:
       XMine += 5
if lead_x < XMine:
       XMine -= 5
if lead_y > YMine:
      YMine += 5
if lead_y < YMine:
       YMine -= 5

(Block_size代表导弹目标的大小,MineThickness是导弹精灵的大小。此外,这都是在pygame中进行的。)

此外,我知道寻求代码是一个但很愚蠢,但我只是不想太复杂。如果您有任何建议,我很乐意将它们合并:)

谢谢!

1 个答案:

答案 0 :(得分:0)

Pygame提供了许多功能来完成您尝试手动完成的操作。如果使用Sprites创建游戏对象,则只需Sprite.colliderect即可处理两个矩形精灵的碰撞。

如果您想手动执行此操作,可以使用Axis-Aligned Bounding Box方法:

 if (lead_x < XMine + MineThickness && lead_x + block_size > XMine):
    // x-axis constraints are met

    if (lead_y < YMine + MineThickness && block_size + lead_y > YMine):
        // y-axis constraints are met

        gameOver = True

这个答案假设你的两个精灵都是方形的。