Unity Raycasthit无法识别带有标签的对象

时间:2019-06-25 14:12:17

标签: c# unity3d

我的游戏中有一个标记为“敌人”的对象,它也位于“敌人”层中。它具有一个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);
        }
    }
}

枪是照相机的子弹,而照相机是游戏者的子弹。播放器位于称为“播放器”的图层中。

有趣的是,如果我放置带有“敌人”标签的其他任何对象,则可以正常识别匹配。

我不知道该怎么办。

Screenshot

1 个答案:

答案 0 :(得分:0)

向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);
        }
    }
}