Unity Raycasthit не распознает объект с тегом - PullRequest
0 голосов
/ 25 июня 2019

В моей игре есть объект, помеченный как «Враг», и он также находится в слое под названием «Враг». К нему прикреплены BoxCollider и Rigidbody. Опция IsTrigger активирована. Когда я стреляю в него, удар не распознается. Хит проходит сквозь него.

Я использую этот метод, чтобы стрелять:

void DisparaBala()
{
    RaycastHit hit;
    if(Physics.Raycast(maiCam.transform.position, maiCam.transform.forward, out hit))
    {
        print("We hit: " + hit.transform.gameObject.tag);
        if (hit.transform.tag == Tags.ENEMY_TAG)
        {
            hit.transform.GetComponent<ScriptVida>().DanoAplicado(damage);
        }
    }
}

Оружие является дочерним элементом камеры, которая является дочерним элементом игрока Игрок находится в слое под названием «Player».

Забавно, если я помещу любой другой объект с тегом «Враг», попадание распознается нормально.

Я не знаю, что делать.

Скриншот

1 Ответ

0 голосов
/ 25 июня 2019

Добавьте маску слоя в свой Physics.Raycast. Вот так:

void DisparaBala()
{
    RaycastHit hit;
    int layerMask = LayerMask.GetMask("Enemy");
    if(Physics.Raycast(maiCam.transform.position, maiCam.transform.forward, out hit, layerMask))
    {
        print("We hit: " + hit.transform.gameObject.tag);
        if (hit.transform.tag == Tags.ENEMY_TAG)
        {
            hit.transform.GetComponent<ScriptVida>().DanoAplicado(damage);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...