C# 统一:光线投射未检测父对象';s标签

C# 统一:光线投射未检测父对象';s标签,c#,unity3d,raycasting,C#,Unity3d,Raycasting,我试图检测玩家何时想要打开/关闭门,因此我创建了一个名为门铰链的空对象,该对象具有标签“门”。然后我创建了一个名为“门体”(Door Body)的立方体对象,它是“门铰链”(Door铰链)的子对象,没有给它任何标记,但给了它一层“忽略光线投射”(Ignore Raycast)。我将父对象的比例设置为(1,1,1),但确实稍微更改了子对象的比例及其x位置 我不知道为什么,但是光线投射似乎只检测子立方体,而不是父空对象。如果我遗漏了什么或做错了什么,有人能告诉我吗?我将在下面添加我的检测代码 voi

我试图检测玩家何时想要打开/关闭门,因此我创建了一个名为门铰链的空对象,该对象具有标签“门”。然后我创建了一个名为“门体”(Door Body)的立方体对象,它是“门铰链”(Door铰链)的子对象,没有给它任何标记,但给了它一层“忽略光线投射”(Ignore Raycast)。我将父对象的比例设置为(1,1,1),但确实稍微更改了子对象的比例及其x位置

我不知道为什么,但是光线投射似乎只检测子立方体,而不是父空对象。如果我遗漏了什么或做错了什么,有人能告诉我吗?我将在下面添加我的检测代码

void CheckInteraction()
{
    // origin starts from the camera
    Vector3 origin = cam.transform.position;
    // direction of the camera
    Vector3 direction = cam.transform.forward;
    // The distance for the raycast
    float distance = 4f;
    // Used to store info about the object that the raycast hits
    RaycastHit hit;

    if (Physics.Raycast(origin, direction, out hit, distance))
    {
        Debug.Log(hit.transform.tag);
        if (hit.transform.tag == "Door")
        {
            Debug.Log("HIT");
            if (Input.GetKeyDown(KeyCode.E))
            {
                hit.transform.gameObject.GetComponent<DoorOpen>().enabled = true;
            }
        }
    }
}
void CheckInteraction()
{
//原点从相机开始
矢量3原点=cam.transform.position;
//摄像机的方向
矢量3方向=cam.transform.forward;
//光线投射的距离
浮动距离=4f;
//用于存储有关光线投射命中的对象的信息
雷卡斯特击中;
if(物理光线投射(原点、方向、命中率、距离))
{
Log(hit.transform.tag);
if(hit.transform.tag==“门”)
{
Log(“HIT”);
if(Input.GetKeyDown(KeyCode.E))
{
hit.transform.gameObject.GetComponent().enabled=true;
}
}
}
}

我缺少的解决方案是,父代空对象需要添加一个框碰撞器。

您的父代游戏对象有碰撞器吗?没有……我现在觉得很愚蠢lol我还是Unity的新手,这是我第一次尝试光线投射。谢谢你的评论,这就是我错过的!