所以基本上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中进行的。)
此外,我知道寻求代码是一个但很愚蠢,但我只是不想太复杂。如果您有任何建议,我很乐意将它们合并:)
谢谢!
答案 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
这个答案假设你的两个精灵都是方形的。