首页 > 后端开发 > Python教程 > 为什么我的 Pygame 碰撞检测总是返回 True,为什么我的图像位置总是 (0, 0)?

为什么我的 Pygame 碰撞检测总是返回 True,为什么我的图像位置总是 (0, 0)?

Patricia Arquette
发布: 2024-12-26 08:17:18
原创
188 人浏览过

Why Does My Pygame Collision Detection Always Return True, and Why Is My Image Position Always (0, 0)?

Pygame 中的碰撞检测和图像定位故障排除

碰撞检测问题:始终返回“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.sprite.Group 来管理精灵。它简化了绘制和碰撞检测。
  • 避免对精灵使用额外的 x 和 y 属性。相反,依靠矩形的位置来获取位置信息。
  • 彻底检查文档以了解 get_rect() 等函数,以了解它们的行为和要求。

以上是为什么我的 Pygame 碰撞检测总是返回 True,为什么我的图像位置总是 (0, 0)?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板