Как уменьшить скорость игрового объекта в Unity? - PullRequest
0 голосов
/ 29 мая 2020

В настоящее время у меня есть игровой объект, и при нажатии кнопки я добавляю скорость по оси y, поэтому персонаж подпрыгивает ... и это работает, как ожидалось.

public float jumpForce

private void Jump()
{
    playerRigidbody.velocity = new Vector2(playerRigidbody.velocity.x, jumpForce);
    AudioManagerController.instance.PlaySfx(Util.AudioEffect.PlayerJump);
}

Однако это довольно линейно, игрок подпрыгивает с постоянной скоростью. Я бы хотел изменить его так, чтобы игрок сначала подпрыгивал медленно, постепенно (экспоненциально? Быстро? Не знаю, какое здесь слово) тем быстрее набирал высоту, чем дольше нажата кнопка.

Вроде как легкость:

enter image description here

Я пробовал увеличить скорость с 0 до jumpForce в update(), аналогично:

jumpModifier = time.deltaTime; // In start()
...
jumpModifier = jumpModifier + time.deltaTime; // in update() 

Я пробовал несколько их вариантов, и он не совсем выполняет то, что я хочу.

Как мне заставить моего персонажа подпрыгнуть в легком прохождении вроде как пожалуйста?

1 Ответ

0 голосов
/ 29 мая 2020

Кривая EaseIn - это кривая Cos + Lerp или "Coserp".

//Ease in
public static float Coserp(float start, float end, float value)
{
    return Mathf.Lerp(start, end, 1.0f - Mathf.Cos(value * Mathf.PI * 0.5f));
}

public static Vector2 Coserp(Vector2 start, Vector2 end, float value)
{
    return new Vector2(Coserp(start.x,end.x,value),Coserp(start.y,end.y,value));
}

public static Vector3 Coserp(Vector3 start, Vector3 end, float value)
{
    return new Vector3(Coserp(start.x, end.x, value), Coserp(start.y, end.y, value), Coserp(start.z, end.z, value));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...