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

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/

    10-10 18:29