所以我一直在研究一款游戏,到目前为止最大的问题是我们无法让玩家与场上的任何物体发生碰撞。相反,他们直接穿过树。谁能告诉我为什么? 这是我尝试用于碰撞检测的代码:
for tree in treelist:
if self.player.rect.x == tree.rect.x:
self.player.rect.x == self.player.rect.x - 2
if self.player.rect.x == tree.rect.x + tree.rect.width:
self.player.rect.x == self.player.rect.x + 2
if self.player.rect.y == tree.rect.y:
self.player.rect.y == self.player.rect.y - 2
if self.player.rect.y == tree.rect.y + tree.rect.height:
self.player.rect.y == self.player.rect.y + 2
这在理论上是合理的还是我的做法全错了?
最佳答案
你在使用pygame吗?如果是这样,则有内置的 colliderect
函数(文档 here )。
如果不是:
请记住,物体移动得非常快会使碰撞检测变得非常困难,因为它们会在一帧的范围内“经过”物体!有更先进的技术来处理这个问题,但现在,尽量让你的碰撞盒相对较大,并且物体移动相对较慢。
编辑:糟糕,我的第一句话听起来很粗鲁。我只是不知何故忘记了这篇文章的标题是什么......
关于python - 如何防止我的 Sprite 穿过 pygame 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392237/