我有带有子对象“怪物和健康”的对象“单元”。我还有带有球体对撞机的对象塔。此外,我在塔对象中有 OnTriggerEnter(Collider co) 函数来检测单元。
例如,当它出现时,我可以通过访问 co.gameObject.name 或什至 co.name 来打印名称“Unit”,我猜这是相同的。
但是,例如,我怎样才能获得 unit 的第一个子对象。我的意思是怪物对象,但不是名称,而只是单位对象的第一个子对象?
更新
使用此代码:
void OnTriggerEnter(Collider co)
{
Debug.Log(co.gameObject.transform.GetChild(0));
}
导致异常:
UnityException: Transform child out of bounds
Tower.OnTriggerEnter (UnityEngine.Collider co) (at Assets/Scripts/Tower.cs:19)
更新 2 打印(co.transform.childCount);给 2
这是正确的,因为我有
Unit
>
Monster
HealthBar
子对象
更新 3 塔代码。使用 UnityEngine;使用 System.Collections;
public class Tower : MonoBehaviour
{
// The Bullet
public GameObject Bullet;
// Rotation Speed
public float rotationSpeed = 35;
void Update()
{
transform.Rotate(Vector3.up * Time.deltaTime * rotationSpeed, Space.World);
}
void OnTriggerEnter(Collider co)
{
print(co.transform.childCount);
if (co.gameObject.name == "Unit(Clone)")
{
GameObject g = (GameObject)Instantiate(Bullet, transform.position, Quaternion.identity);
g.GetComponent<Bullet>().target = co.transform;
}
}
}
此代码不知何故设法打印了两次
2
UnityEngine.MonoBehaviour:print(Object)
Tower:OnTriggerEnter(Collider) (at Assets/Scripts/Tower.cs:20)
0
UnityEngine.MonoBehaviour:print(Object)
Tower:OnTriggerEnter(Collider) (at Assets/Scripts/Tower.cs:20)