【发布时间】:2015-08-05 06:46:33
【问题描述】:
我最近在我的 Pygame 项目中遇到了一个简单的碰撞检测测试问题。我故意不使用 Sprite 类和 Pygame 提供的一些内置碰撞函数用于学习目的。我遇到的问题不是没有检测到碰撞。问题是碰撞持续的时间比它们应该的要长。
如果你运行我的代码,你会看到随机从屏幕上掉下来的Obstacle 对象在一段时间内穿过Player 对象,即使它们已经消失了。 collisions 计算 Obstacle 穿过 Player 的坐标数,它通常介于 -17 到 -21 之间。为什么会这样?既然声明了布尔值obstacle.exists = False,那么Obstacle 对象是否应该在它有时间通过Player -17 到-21 相交坐标之前立即销毁?这可能是由fps问题引起的吗?
基本上,我想弄清楚的是如何让Obstacle 在碰撞时立即被销毁,这样collisions 只减去一次。
【问题讨论】:
-
有些不相关,但您可能希望使用
if variable或if not variable而不是== True或== False来测试布尔值。 -
@MathiasEttinger 感谢您提供信息。看看我能不能把东西清理干净!
-
您在碰撞检测中的测试也是不需要的:
if obstacles.exists == False就在obstacles.exists = False之后。collided也一样。
标签: python pygame collision-detection