Заставить игрока получить GetKeyUp до определенного времени - PullRequest
0 голосов
/ 05 марта 2019

Итак, я работаю над этим 2D бегуном и использую функцию transform.position, но я заметил, что из-за этого гравитация в Unity не работает.Я все еще хочу, чтобы это сработало, поэтому я настроил эту искусственную гравитацию (см. В сценарии), однако, если вы удерживаете кнопку W нажатой, человек может продолжать летать вечно.Я только хочу, чтобы человек мог быть в воздухе на секунду.Как мне это сделать?

if(Input.GetKeyDown(KeyCode.W) && transform.position.y < 0.1)
{
    target_position = new Vector2(transform.position.x, transform.position.y + jump_force);
}

//gravity
if (Input.GetKeyUp(KeyCode.W))
{
    target_position = new Vector2(transform.position.x, transform.position.y - jump_force);
}

Ответы [ 2 ]

0 голосов
/ 05 марта 2019

Так что я понял это.

 if(Input.GetKeyDown(KeyCode.W) && transform.position.x > max_left && transform.position.x < max_right && transform.position.y < 0.1)
    {
        target_position = new Vector2(transform.position.x, transform.position.y + jump_force);
        Invoke("normal_position", jump_timer);

    }

}

public void normal_position()
{
    target_position = new Vector2(transform.position.x, 0);
}

Таймер прыжка показывает, сколько времени потребуется, пока объект не вернется на землю.

0 голосов
/ 05 марта 2019

На самом деле вы не реализуете гравитацию, потому что вы ожидаете события KeyUp.Не ждиПросто сделай.

if (Input.GetKeyDown(KeyCode.W))
{
    // Do your movement stuff
}

// Just implement gravity here
transform.position = transform.position - Vector3.Down;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...