碰撞检测问题:始终返回“True”
其中之一碰撞检测函数在不应该返回“True”时返回“True”的最常见原因是使用了错误的坐标 信息。在您的代码中,球和障碍物精灵具有额外的 x 和 y 属性,但 Surface 对象的 get_rect() 方法不会根据这些属性自动更新其位置。
解决方案:
要解决此问题,您应该在调用时使用 topleft 关键字参数手动设置矩形的位置get_rect():
self.rect = self.image.get_rect(topleft=(self.x, self.y))
图像定位问题:始终返回 (0, 0)
默认情况下,Surface 对象的坐标始终设置为 ( 0, 0),无论它显示在屏幕上的哪个位置。将图像传输到游戏显示屏上时,您需要提供要绘制图像的正确坐标。
解决方案:
您只需使用坐标即可blitting 图像时存储在 rect 属性中:
gameDisplay.blit(self.image, self.rect)
附加提示:
以上是为什么我的 Pygame 碰撞检测总是返回 True,为什么我的图像位置总是 (0, 0)?的详细内容。更多信息请关注PHP中文网其他相关文章!