如何防止我的精灵通过pygame中的对象? - python

所以我一直在研究游戏,到目前为止最大的问题是我们无法让玩家与场地上的任何物体发生碰撞。相反,它们直接穿过树。谁能告诉我为什么?
这是我尝试用于冲突检测的代码:

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

从理论上讲这是合理的还是我做错了?

python大神给出的解决方案

您在使用pygame吗?如果是这样,则有内置的colliderect函数(文档here)。

如果不:

Here's相对较深入的讨论,考虑了平台游戏。
This只是针对轴对齐(即未旋转)的矩形的准系统二维碰撞检测

请记住,快速移动的物体会使碰撞检测变得非常困难,因为它们会在一帧范围内移动“过去”物体!有更先进的技术可以解决此问题,但是现在,请尝试使碰撞盒相对较大,并且动作相对较慢。

编辑:糟糕,我的第一句话听起来很粗鲁。我只是以某种方式忘记了这篇文章的标题是...