Не работает гравитация, когда персонаж касается стены во время прыжка - PullRequest
0 голосов
/ 05 июня 2018

Это происходит только тогда, когда: при ударе о стену во время прыжка + при нажатии стрелок влево и вправо.

Когда стены нет, действует гравитация и персонаж падает.Однако, когда персонаж попадает в стену, скорость Y сразу становится равной 0.Когда левая и правая клавиши со стрелками вверх, персонаж снова падает.

GroundCheck работает хорошо.

Я долго думал, но не знаю почему.Мне нужна помощь.

Видео об ошибке в моей игре: https://youtu.be/5omWCYm-y14

Мой код:

private void FixedUpdate()
{
    isGrounded = Physics2D.OverlapCircle(GroundCheck.position, GroundCheckRadius, GroundLayer) != null;

    if (isGrounded)
    {
        if (Input.GetKeyDown(KeyCode.Z))
        {
            body.AddForce(Vector2.up * JumpForce);
        }
    }

    body.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * DefaultSpeed, body.velocity.y);
}

1 Ответ

0 голосов
/ 05 июня 2018

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

Замените

body.velocity = new Vector2(Input.GetAxisRaw("Horizontal") * DefaultSpeed, body.velocity.y);

на

body.AddForce(Input.GetAxisRaw("Horizontal") * DefaultSpeed * Vector2.right);
...