角色移动,加速C#Unity

时间:2019-09-23 14:03:21

标签: c# unity3d acceleration

大家好,新手。

自上而下的塞尔达风格游戏。

我试图弄清楚如何使播放器的速度达到最大速度,然后降低速度使其停止。

我已经可以使用GetRawAxis进行移动了,但是当我按下此方法移动时,char就会以最大速度移动。

private void PlayerMovement()
{
    var playerMovement = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")).normalized * Time.deltaTime * moveSpeed;

    transform.position = new Vector3(
        transform.position.x + playerMovement.x,
        transform.position.y + playerMovement.y,
        transform.position.z);
}

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以在x轴上移动对象,从而逐渐提高速度。您可以通过减慢速度执行相同的操作。逐渐降低速度。

float acceleration = 0.6;
float maxSpeed = 30;
float speed = 0;

void Update(){
   if(speed < maxSpeed){
      speed += acceleration * Time.deltaTime;
    }

   transform.position.x = transform.position.x + speed*Time.deltaTime;

}

答案 1 :(得分:0)

您可以尝试Vector3.SmoothDamp

这使用存储当前“速度”的Vector并将其缓慢转储。

示例可以在这里找到: https://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.html