微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

碰撞检测pygame

如何解决碰撞检测pygame

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

解决方法

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

类似(伪代码):

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。