Pygame 中的初始碰撞检测
Initial Collision Detection in Pygame
我最近 运行 在我的 Pygame 项目中进行了简单的碰撞检测测试。为了学习目的,我故意不使用 Sprite
class 和 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
我最近 运行 在我的 Pygame 项目中进行了简单的碰撞检测测试。为了学习目的,我故意不使用 Sprite
class 和 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