Pygame中的初始碰撞检测

问题描述 投票:0回答:1

我最近在我的Pygame项目中遇到了一个简单的碰撞检测测试问题。我故意不使用Sprite类和Pygame提供的一些内置碰撞功能来学习。我遇到的问题不是没有检测到冲突。问题是,碰撞持续的时间比应该持续的时间长。

如果运行我的代码,您会看到随机落在屏幕上的Obstacle对象穿过Player对象一段时间,即使它们消失了也是如此。 collisions计算Obstacle通过Player的坐标数,该坐标通常在-17至-21之间。为什么会这样呢?由于声明了布尔值obstacle.exists = False,在Obstacle对象没有时间通过​​Player -17至-21相交坐标之前,是否应该立即销毁它?这可能是由fps问题引起的吗?基本上,我要弄清楚的是如何在碰撞时[[立即销毁Obstacle,因此collisions只减一次。

python pygame collision-detection
1个回答
0
投票
与障碍物的存在无关地进行碰撞检测。您应该在碰撞检测中添加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

© www.soinside.com 2019 - 2024. All rights reserved.