如何解决PYGAME:pygame 中的冲突在 100% 的情况下都不起作用
子弹与敌人的碰撞有效,但经常无效,不知道为什么。碰撞代码:
def collision1(bullx,bully,enemyx,enemyy):
distance = math.sqrt(math.pow(enemyx - bullx,2) + math.pow(enemyy - bully,2))
if distance < 40:
return True
else:
return False
解决方法
我假设这段代码不是类的一部分。你不应该求一个二维向量的大小,因为当存在以下方法时,这是没有用的。
您需要做的是将敌人的 Rects 存储在列表中。要从 Surface 或图像获取 Rect,请执行 yourSurface.get_rect()
。对你的公牛性格也这样做。
在您的循环中,在绘制所有内容之前放入此代码:
if bullRect.collidelist(enemies) >= 0:
# Do whatever you want when the bull collides with an enemy
bullRect
是公牛的 Rect 对象,enemies
是敌人的 Rect 列表。
Rects 有一个函数来查看列表中的任何 Rects 是否发生冲突。 Rect.collidelist()
如果没有任何接触或接触 Rects 的数量减去 1,则返回 -1,因此 >= 0
部分。
要将其存储为函数,如您所愿,您可以这样做:
def bullCollides():
return bullRect.collidelist(enemies) >= 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。