微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PYGAME:pygame 中的冲突在 100% 的情况下都不起作用

如何解决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 举报,一经查实,本站将立刻删除。