如何让Prefabs团结一致?

时间:2018-04-16 09:16:26

标签: c# unity3d

我想将坦克脸旋转到移动敌人的方向,我需要enemy的位置。

当敌人在层次结构中时,

enemy.transform.position;起作用,但我的敌人在预制件中并且跟随代码不起作用。请帮助:)

using UnityEngine;
using System.Collections;

public class RotateTank : MonoBehaviour {
public GameObject enemy;

void Update () {
    faceTank ();
}

void faceTank(){

    Vector3 enemyPosition;

    enemyPosition = enemy.transform.position;


    Vector2 direction = new Vector2 (
                             enemyPosition.x - transform.position.x,
                             enemyPosition.y - transform.position.y

                         );

    transform.up = direction;
}
}

1 个答案:

答案 0 :(得分:1)

游戏世界中不存在预制件。预制件是&#34;模板&#34;可以实例化的。如果您想要做的是让坦克向游戏世界中存在的任何敌人旋转,您需要在RotateTank脚本中引用这些游戏对象。你可以通过多种方式实现这一目标,例如添加“敌人”和“敌人”。标记你的敌人预制并使用GameObject.FindGameObjectsWithTag找到衍生的敌人。你的List<GameObject>脚本中也可能有一个静态RotateTank,它包含对现有敌人的引用,并在它们产生时将它们添加到该列表中,并在它们死亡时删除它们。