我最近在我的Pygame项目中遇到了一个简单的碰撞检测测试问题。我故意不使用Sprite
类和Pygame提供的一些内置碰撞功能来学习。我遇到的问题不是没有检测到冲突。问题是,碰撞持续的时间比应该持续的时间长。
如果运行我的代码,您会看到随机落在屏幕上的Obstacle
对象穿过Player
对象一段时间,即使它们消失了也是如此。 collisions
计算Obstacle
通过Player
的坐标数,该坐标通常在-17至-21之间。为什么会这样呢?由于声明了布尔值obstacle.exists = False
,在Obstacle
对象没有时间通过Player
-17至-21相交坐标之前,是否应该立即销毁它?这可能是由fps问题引起的吗?基本上,我要弄清楚的是如何在碰撞时[[立即销毁Obstacle
,因此collisions
只减一次。
obstacles.exists
作为第一个测试:if (obstacles.exists and
obstacles.x < player.x + player.w and
obstacles.x + obstacles.w > player.x and
obstacles.y < player.y + player.h and
obstacles.h + obstacles.y > player.y):
#do stuff