pygame - 碰撞:传送和“滑动”问题

时间:2016-01-29 18:44:28

标签: python pygame collision-detection collision game-physics

我在pygame碰撞上做了几个帖子,还有一个帖子。我为帖子的“垃圾邮件”道歉,但这些错误对我来说很奇怪。此外,我正在与一个小组合作,所以我不确定问题出在我所制作的代码中还是在其他人编写的代码中。

话虽如此,这里是我们的github的链接:https://github.com/drexel-game-devs/Project_Folder

我引用的所有代码都位于“代码”文件夹中的“播放器资源”下。

我负责制作Physics_Engine类,这是处理冲突的地方。该函数在Player_Assets类中调用,其中存储了Player类。现在,碰撞被检测到并以一种小故障的方式处理。如果我从右侧接近一个物体,玩家将停留一段时间然后传送通过该物体。从顶部接近一个物体甚至更奇怪:玩家将“滑动”离开物体,然后向左/向下爬行,然后从物体的“底部”掉落。

任何帮助将不胜感激。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我在handle_collision

中看到了大问题

您同时更改某个地方xy 然后

  1. 您遇到了碰撞 - spritecollide()

  2. 如果您移动left/right,则更改x

  3. 这就是问题所在。

    spritecollide()为您提供所有碰撞 - left/righttop/bottom

    玩家可能只碰撞top/bottom,但你会将其作为left/right碰撞(并将玩家滑向left/right方)。

    -

    你必须这样做:

    1. 仅更改 x

    2. 发生碰撞 - 它只发出left/right次碰撞

    3. 如果您移动left/right,则更改x

    4. 仅更改 y

    5. 发生碰撞 - 它只发出top/bottom次碰撞

    6. 如果您移动top/bottom,则更改y