我正在尝试开发一个小型的2D Unity平台,以学习使用Unity的界面。我一直在尝试制作一个游戏对象跟踪敌人的克隆并跟随它。当你将鼠标悬停在敌人的克隆上时,它的功能就是如此,它可以显示敌人的健康状况。但是当我盘旋在敌人身上时,它会跟踪原始敌人的位置,而不是克隆人的位置。两个游戏对象都有相同的名称。我想要的是GameObject HoverDataDisplay (如截图所示)来追踪它的兄弟,Enemy。
我对跟踪脚本的当前代码如下所示:
private GameObject Enemy;
void Start() {
Enemy = GameObject.Find ("Enemy");
}
void Update(){
transform.position = new Vector3 (Enemy.transform.position.x - 0.57f, Enemy.transform.position.y + 1.5f, Enemy.transform.position.z);
}
但GameObject(HoverDataDisplay)只跟随原始敌人。
感谢您的帮助!
答案 0 :(得分:2)
在Unity中,您可以使用正斜杠"/"
来查找对象的子级。由于父母的名字不同,你可以很容易地找到它们:
GameObject.Find("EnemyObject/Enemy");
第二个HoverDataDisplay:
GameObject.Find("EnemyObject(Clone)/Enemy");
让GameObject使用默认的“克隆”名称并不是一个好主意。您应该在实例化它之后重命名它,以便它很容易找到。只有在实例化后需要找到Object时才执行此操作。
此脚本附加到HoverDataDisplay GameObject
您实际上可以使用transform.parent
获取它的父对象,它是 EnemyObject 或 EnemyObject(克隆),然后使用FindChild
查找敌人对象。
//First, Find the Parent Object which is either EnemyObject or EnemyObject(Clone)
Transform parent = transform.parent;
//Now, Find it's Enemy Object
GameObject enemy = parent.FindChild("Enemy").gameObject;
我建议您使用此方法而不是我提到的第一个方法。提到第一个,以便您知道它可以完成。
修改强>:
Transform.FindChild
现已弃用。您可以使用Transform.Find
执行相同的操作。
答案 1 :(得分:0)
您可以获得父母的参考,然后搜索父母的孩子
// get a reference to the rb of the parent
parentRigidbody = gameObject.GetComponentInParent<Rigidbody>();
// a reference to the camera in a sibling object
playerCam = rigRigidbody.gameObject.GetComponentInChildren<Camera>();