如何避免物体从斜坡上滚落时产生的跳跃问题?

我用SAT实现了一个物体在斜坡上运动的场景,当物体前进时效果是正确的,但当物体从斜坡上滚落时,产生了一些跳跃:
图片描述

预期的是物体粘在坡上,和前进时的效果一样,请问这种情况有什么好的解决方案吗?

这是部分代码:

slopes.forEach((slope) => {
    //Minimum Translation Vector
    let mtv = character.collidesWith(slope);

    if(mtv.overlap !== 0) {
        character.velocityY = 0;
        character.positionY -= mtv.overlap;
    }
});

以及用到的图片,斜坡部分为橙色:
图片描述

阅读 3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题