我想使用光线投射启用一些游戏对象。
我有一个主要对象,它与一个撞机碰撞成一个孩子。该子项包含一个文本,当该子项的对撞机被射线投射击中时,我要启用该文本。我已经尝试过以下代码,但无法正常工作。如何通过射线广播访问孩子?
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/