Движение персонажа, ускорение C # Unity - PullRequest
1 голос
/ 23 сентября 2019

Привет всем. Новичок здесь.

Игра в стиле Zelda сверху вниз.

Я пытаюсь выяснить, как заставить моего игрока развить скорость до максимальной скорости, а затем снизить скорость до остановки.

У меня уже есть движение с GetRawAxis, но мой персонаж двигается с максимальной скоростью, как только я нажимаю кнопку перемещения с помощью этого метода.

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 ]

1 голос
/ 23 сентября 2019

Вот сценарий, в котором вы можете перемещать ваш объект по оси 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;

}
0 голосов
/ 23 сентября 2019

Вы можете попробовать Vector3.SmoothDamp.

Здесь используется вектор, сохраняющий текущую "скорость", и медленно сбрасывается.

Пример можно найти здесь: https://docs.unity3d.com/ScriptReference/Vector3.SmoothDamp.html

...