Unity Rigidbody скользит после прыжка - PullRequest
0 голосов
/ 25 января 2020

Я бы хотел, чтобы мой персонаж прыгал по диагонали, но когда он падает на землю, он скользит.

private void Update()
{
    if (Input.GetMouseButtonUp(0) && isGrounded())
    {
        //jump 
        timeHeld = 0;
        Debug.Log("MouseButtonUp = true");
        rb.AddForce(jumpDirection, ForceMode2D.Impulse);
    }
    else if (isGrounded())
    {
        rb.velocity = Vector2.zero;
    }
}

этот код как-то работает, но он глючит, когда игрок падает на землю. Мне нужно приложить некоторое усилие, чтобы вытащить его из isGounded (), иначе он просто поднимет несколько пикселей и снова будет мгновенно оттолкнут. Это моя функция isGounded ()

private bool isGrounded()
{
    RaycastHit2D raycastHit = Physics2D.BoxCast(boxCollider2d.bounds.center, boxCollider2d.bounds.size, 0f, Vector2.down, 0.1f, platformLayerMask);
    return raycastHit.collider != null;
}

проблема, очевидно, в моем расстоянии, равном 0,1f в Boxcast (). Есть идеи как это исправить?

1 Ответ

2 голосов
/ 25 января 2020

Нет необходимости проверять землю самостоятельно.

  1. Добавить событие единства под названием OnCollisionEnter
  2. Внутри проверьте, является ли коллайдер земным
  3. Если true тогда скорость = ноль
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...