Как проверить, находится ли игрок на стене в Unity 2D? - PullRequest
0 голосов
/ 26 июня 2018

Я делаю простую 2D-игру, где игрок должен подпрыгнуть. Я создаю карту с Tilemaps. Чтобы игрок прыгнул, он должен коснуться земли. Пример:

void OnCollisionEnter2D(Collision2D other)
{
    if(other.transform.tag == "Ground")
    {
        IsGrounded = true;
    }

}

Теперь небольшая проблема: если игрок касается даже снизу, слева или справа от коллайдера, то isGround становится истинным, и игрок может прыгнуть со стены. Как я могу отключить это?

1 Ответ

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

Есть много способов сделать это. То, как я бы это сделал, это копаться в объекте Collision2D. Из него вы можете получить массив ContactPoint2D, используя other.contacts, который может сказать вам направление поверхности, с которой вы столкнулись.

Что-то вроде:

void OnCollisionEnter2D(Collision2D other)
{
    if(other.transform.tag == "Ground" && other.contacts[0].normal == Vector2.up)
    {
        IsGrounded = true;
    }

}

other.contacts[0].normal == Vector2.up проверяет "нормальное" направление первого контакта и сравнивает его с вектором "вверх" мира.

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