Jump () вызывается несколько раз - PullRequest
1 голос
/ 24 марта 2019

Я вызываю функцию Jump(), используя Input.GetAxisRaw("Vertical").Но эта функция вызывается несколько раз, и персонаж прыгает в 3 раза выше.Я также имел обыкновение проверять, заземлен ли raycast и OnCollisionEnter2D, но все еще была такая проблема.

void Update()
{
    int yMovement = (int)Input.GetAxisRaw("Vertical");
    if (yMovement == 1)
    {
        Jump();
    }
    isGrounded = Physics2D.OverlapArea(new Vector2(transform.position.x - 0.5f, transform.position.y - 0.5f), new Vector2(transform.position.x + 0.5f, transform.position.y - 0.51f), groundLayer);
}
void Jump()
{
    if (!isGrounded)
    {
        return;
    }
    else
    {
        print("jump");
        transform.localScale = new Vector2(1, 1);
        r.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse);
        isGrounded = false;
    }
}

1 Ответ

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

Уменьшите круг перекрытия и настройте последовательность 1) Проверка IsGolved 2) Тогда прыгай

Вместо того, чтобы сначала прыгать, а затем проверять заземление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...