
private void Move() { if(Mathf.Abs(inputAction.x) > 0)//检测玩家是否输入移动 { timeElapsed_dc = 0; if (timeElapsed_ac < accelerationTime)//根据加速时长线性增加速度 { timeElapsed_ac += Time.fixedDeltaTime; float t = timeElapsed_ac / accelerationTime; currentSpeed = Mathf.Lerp(currentSpeed, normalSpeed * Mathf.Sign(inputAction.x), t); } else//如果达到最大速度,就保持 { currentSpeed = normalSpeed * Mathf.Sign(inputAction.x); timeElapsed_ac = 0; } } else if(Mathf.Abs(inputAction.x) == 0)//如果检测到玩家不在输入,则开始减速 { timeElapsed_ac = 0; if (timeElapsed_dc < decelerationTime)//根据减速时长线性减小速度 { timeElapsed_dc += Time.fixedDeltaTime; float t = timeElapsed_dc / decelerationTime; currentSpeed = Mathf.Lerp(currentSpeed, 0, t); } else//如果减速到零,就保持 { currentSpeed = 0; timeElapsed_dc = 0; } } rb.velocity = new Vector2(currentSpeed, 0);//最终将新的速度传递给游戏物体 }
评论区
共 条评论热门最新