I have Object "Unit" with sub Objects "Monster and Health. I also have Object Tower that has sphere collider. Also I have OnTriggerEnter(Collider co) function in Tower Object that detects Unit.
When it does I can for example print the name "Unit" by accessing it co.gameObject.name, or even co.name, which I guess is the same.
But how can I get the first subobject of unit for example. I mean Monster object, but not by name but just the FIRST SUB OBJECT of Unit object ?
UPDATE
Using this code:
void OnTriggerEnter(Collider co)
{
Debug.Log(co.gameObject.transform.GetChild(0));
}
Causes an exception:
UnityException: Transform child out of bounds
Tower.OnTriggerEnter (UnityEngine.Collider co) (at Assets/Scripts/Tower.cs:19)
UPDATE 2 print(co.transform.childCount); gives 2
And that's correct cause I have
Unit
>
Monster
HealthBar
subobjects
Update 3 Tower code. using UnityEngine; using 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;
}
}
}
This Code Somehow manages to print twice
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)