Обнаружение препятствий и блокирование движения игроков с помощью Raycast - PullRequest
0 голосов
/ 28 ноября 2018

Я новичок в Unity3D и у меня проблема с обнаружением столкновений.Я хочу вернуть истину, если столкнусь с препятствием посредством радиопередачи и заблокирую движение в этом направлении.Это хорошо работает, когда я нахожусь перед препятствием лицом к лицу.Когда я меняю направление и нахожусь перед препятствием (но с другим направлением лица), он возвращает ложь, и я все еще могу двигаться во всех направлениях (это должно блокировать движение "вверх", как вы видите на первом изображении).Любые советы будут с благодарностью!

Возвращает истину, когда перед нами препятствие, и мы не можем двигаться "вверх"

Возвращает ложь, когда слева или справа находится препятствие

Игрок заблокирован после неправильного хода

Вот пример моего кода:

void Update()
{

    Ray myRay = new Ray(transform.position, Vector3.right);
    Debug.DrawRay(transform.position, Vector3.right, Color.red);

    if (Physics.Raycast(myRay, out hit, 1.5f))
    {
        if (hit.collider.gameObject.tag == "TerrainObject")
        {
            Debug.DrawRay(transform.position, Vector3.right, Color.blue);
            upHit = true;
        }
    }
    else
        upHit = false;
    ...
}

1 Ответ

0 голосов
/ 29 ноября 2018

Как обсуждалось в комментариях, вам нужно увеличить начальную высоту raycast.

Используйте Ray myRay = new Ray(transform.position+new Vector3(0f,0.15f,0f), Vector3.right);, чтобы немного добавить raycast от земли.

...