aus*_*gat 5 c++ sdl 2d collision-detection
我正在使用C ++和SDL开发一个小型2D平台游戏/格斗游戏,并且在碰撞检测方面遇到了很多麻烦。
这些关卡由一组拼贴组成,我使用一个for循环遍历每个贴砖(我知道这样做可能不是最好的方法,对此我可能也需要帮助)。对于角色的每一侧,我都将其沿该方向移动一个像素,并检查是否有碰撞(我还要检查角色是否沿该方向移动)。如果发生碰撞,我将速度设置为0,然后将播放器移至图块的边缘。
我的问题是,如果我首先检查水平碰撞,并且播放器每帧垂直移动一个像素以上,它将处理水平碰撞并将角色移动到瓷砖的侧面,即使瓷砖低于(或高于)性格。如果我先处理垂直碰撞,除了水平轴会执行相同操作外,其他操作都一样。
如何在没有这些问题的情况下处理两个轴上的碰撞?有没有比我做的更好的方法来处理碰撞?
XNA 的 2D 平台游戏示例也使用了基于 tile 的碰撞。他们在那里处理它的方式非常简单,可能对您有用。这是对那里内容的精简解释(删除特定于他们的演示内容):
如果您获取代码并想查看它们在那里具体做什么,它位于 HandleCollisions() 函数中的 player.cs 中。