【问题标题】:Collision Detection pygame碰撞检测pygame
【发布时间】:2021-03-08 10:59:13
【问题描述】:

我目前正在按照 youtube 教程制作一个小游戏。我通过清除运动代码遵循本教程:https://www.youtube.com/watch?v=4aZe84vvE20&t=230s&ab_channel=ClearCode 我想把我的游戏提升到一个新的水平,并在地图周围添加一些用户必须避免的街区。我想这样做,如果汽车撞到一个街区,它就会停下来,只有当用户将它旋转到背离街区时才会移动,进入一个空白空间。现在,在玩家类中,我创建了一个碰撞属性并使用 pygame.sprite.spritecollide(self, blocks, True) 来检查碰撞。 blocks 变量是一个包含块的所有精灵的组。 如果发生碰撞,我将向量更改为 (0,0),这会按预期停止汽车。但是,一旦我旋转汽车使其背离积木块,我就想不出一种方法来再次改变矢量,让它再次运行。任何帮助表示赞赏。提前致谢。

【问题讨论】:

    标签: vector pygame collision


    【解决方案1】:

    不要将运动矢量更改为 (0, 0)。一旦检测到碰撞,就改变汽车的位置,使汽车只接触物体而不与物体相交。

    类似(伪代码):

    if collide_at_left_side:
       car.rect.left = obstacle.rect.right
    

    更通用的解决方案是沿碰撞的法向量校正位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多