python - 如何防止我的 Sprite 穿过 pygame 中的对象?

标签 python python-2.7 pygame collision-detection sprite

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

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 )。

如果不是:

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

请记住,物体移动得非常快会使碰撞检测变得非常困难,因为它们会在一帧的范围内“经过”物体!有更先进的技术来处理这个问题,但现在,尽量让你的碰撞盒相对较大,并且物体移动相对较慢。

编辑:糟糕,我的第一句话听起来很粗鲁。我只是不知何故忘记了这篇文章的标题是什么......

关于python - 如何防止我的 Sprite 穿过 pygame 中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27392237/

相关文章:

python - Pygame | Blited 图像不断地跳来跳去

python - 在pygame中转换图像

python - python 中的 tensorflow 夜间轮

python - 推广 ODE 求解器的函数

python - 在派生类中调用 super() 时,可以传入 self.__class__ 吗?

python - 在Python中访问条件迭代

python - 使用 Opennoise 在 Pymunk 中创建地形(形状)

Python Kafka 模拟 Kafka Consumer 的返回类型

python - 如何为所有类方法将常量字符串添加到 __doc__?

Python 2.7 getfullargspec 等效项