我正在使用C++和SDL制作一个小型2D平台/格斗游戏,但是我在碰撞检测方面遇到了很多问题。
游戏关卡由一系列瓷砖组成,我使用for循环遍历每个瓷砖(我知道这可能不是最好的方法,我可能需要帮助解决)。对于角色的每个侧面,我将其向该方向移动一个像素并检查碰撞(还要检查角色是否向该方向移动)。如果发生碰撞,我将速度设置为0并将玩家移动到瓷砖的边缘。
我的问题是,如果我先检查水平碰撞,并且玩家每帧垂直移动超过一个像素,则即使瓷砖在角色下方(或上方),它也会处理水平碰撞并将角色移动到瓷砖的侧面。如果我先处理垂直碰撞,则会出现相同的情况,只不过是在水平轴上。
如何在两个轴上处理碰撞而不出现这些问题?有没有比我现在做的更好的处理碰撞的方法?
游戏关卡由一系列瓷砖组成,我使用for循环遍历每个瓷砖(我知道这可能不是最好的方法,我可能需要帮助解决)。对于角色的每个侧面,我将其向该方向移动一个像素并检查碰撞(还要检查角色是否向该方向移动)。如果发生碰撞,我将速度设置为0并将玩家移动到瓷砖的边缘。
我的问题是,如果我先检查水平碰撞,并且玩家每帧垂直移动超过一个像素,则即使瓷砖在角色下方(或上方),它也会处理水平碰撞并将角色移动到瓷砖的侧面。如果我先处理垂直碰撞,则会出现相同的情况,只不过是在水平轴上。
如何在两个轴上处理碰撞而不出现这些问题?有没有比我现在做的更好的处理碰撞的方法?