我想使用光线投射启用一些游戏对象。

我有一个主要对象,它与一个撞机碰撞成一个孩子。该子项包含一个文本,当该子项的对撞机被射线投射击中时,我要启用该文本​​。我已经尝试过以下代码,但无法正常工作。如何通过射线广播访问孩子?

public class SeleccionarTesoro_LIST : MonoBehaviour {
    void Start()
    {
        GameObject[] hitObject = GameObject.FindGameObjectsWithTag("TESOROS");
    }

    public void SetHitObjectToActive(GameObject hitObject)
    {
        hitObject.transform.GetChild(0).GetChild(0).gameObject.SetActive (true);
        hitObject.transform.GetChild(0).GetChild(2).gameObject.SetActive (true);
    }

    void Update() {

        if (Input.GetMouseButtonDown (0))
        {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);

            if (Physics.Raycast (ray, out hit)) {
                SetHitObjectToActive (hit.collider.gameObject);
            }
        }
    }

}

最佳答案

根据您的评论,我认为您是想以错误的方式联系孩子。

首先调用每个游戏对象的名称。例如:


MainGameObject
儿童胶囊
儿童文字


现在,要访问孩子,请执行以下操作:

public void SetHitObjectToActive(GameObject hitObject)
{
     hitObject.transform.Find("ChildCapsule").gameObject.transform.Find("ChildText").gameObject.SetActive (true);
}

关于c# - Unity-对 child 的射线广播不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50580122/

10-16 09:02