Создание прыжка как в игре google динозавр в unity

В общем нужно сделать прыжок как в игре google динозавр в unity. При быстром нажатии на кнопку пробел, происходит маленький прыжок, а при долгом нажатии высокий прыжок. Еще, нужно сделать динамический прыжок зависящий от долготы нажатия кнопки, при этом, даже если кнопка была нажата на милесекунду, происходил прыжок на определенную высоту, и если кнопка прыжка зажата слишком долго, то этот прыжок будет усиливаться. Можете пожалуйста привести пример кода если не трудно. Спасибо


Ответы (1 шт):

Автор решения: Майкл Йолович

Ничего сложного. Нужно запустить корутину, которая будет отсчитывать время, когда клавиша будет нажата.

У меня в зависимости от количества секунд увеличивается сила прыжка.

только здесь не пробел, а левая кнопка мыши у меня, но, думаю, несложно будет заменить

public class PlayerController : MonoBehaviour
{
    private Rigidbody2D _rb;
    private Coroutine _timer;
    private float _seconds;
    public int forceUp = 100, forceForward = 50;

    private void Start()
    {
        _rb = GetComponent<Rigidbody2D>();

    }

private void Update()

    {

        if (Input.GetMouseButton(0))
        {
            _timer = StartCoroutine(CountOfSeconds());

        }


            if (Input.GetMouseButtonUp(0))
        {
            StopCoroutine(_timer);
            _rb.AddForce(new Vector2(forceForward * seconds, forceUp * seconds));
            _seconds = 0;

        }
    
    }

 private IEnumerator CountOfSeconds()
    {
        _seconds++;
        yield return new WaitForSeconds(1f);

    }
}
→ Ссылка