我正在制作一个3D游戏,使用动态的Rigidbody,但我只使用Unity物理引擎来模拟重力,其余的几乎都是手动编码。在我的游戏中,玩家在空中没有太多的“摩擦”,所以改变方向需要一段时间。这在正常情况下是可以接受的,但是在我移动到墙壁时就出现了问题。我不太明显地移动,因为我是对着墙壁,但当我试图移动到墙壁时,我会有一个延迟,玩家会在相反方向上加速。我不希望这样。
我认为原因是玩家没有直接控制线性速度。当玩家移动时,他们的输入会控制一个Vector2变量,然后这个Vector2会修改线性速度。例如,在2D游戏中,如果玩家按住D键向右移动,变量会等于1。然后玩家试图向左移动,变量会花一些时间从1变为-1。但是,如果玩家试图在墙壁上移动,变量从-1变为0所花的时间就是玩家没有移动的时间,这给了玩家一个延迟的感觉。
因此,对于上述例子,我的解决方案是让变量瞬间从-1变为0,然后让它逐渐达到1。这个问题与我的实际问题类似,但是在3D中我不知道如何解决这个问题。
评论 (0)