我有一个敌人的预制件,如果我在同一场景中放置相同的预制件超过1次只有其中一个工作,那个工作的一个总是我放在场景中的最后一个预制件:
其他敌人在那里,但部分脚本似乎不起作用,另一部分是。
Foc scriptFoc;
GameObject focGO;
private Animator animator;
private Transform target;
private Vector3 relativePoint;
private float tempsActual = 0.0f;
private bool foc = true;
public float duracioNormal;
public float duracioFoc;
void Start () {
target = GameObject.FindGameObjectWithTag("Player").transform;
animator = this.GetComponent<Animator>();
focGO = GameObject.FindGameObjectWithTag("Foc");
scriptFoc = focGO.GetComponent<Foc>();
scriptFoc.actiu();
}
void Update ()
{
if (drac_Actiu())
{
if(!foc)
{
tempsActual += Time.deltaTime;
if (tempsActual >= duracioNormal)
{
scriptFoc.actiu();
tempsActual = 0.0f;
foc = true;
animator.SetBool("Foc", true);
}
}
else if(foc)
{
tempsActual += Time.deltaTime;
if (tempsActual >= duracioFoc)
{
scriptFoc.inactiu();
tempsActual = 0.0f;
foc = false;
animator.SetBool("Foc", false);
}
}
}
}
private bool drac_Actiu()
{
relativePoint = transform.InverseTransformPoint(target.position); //Punt del jugador
if (relativePoint.x < 2.0f || relativePoint.x > -2.0f)
{
return true;
}
else
{
return false;
}
}
你有什么想法吗? 谢谢!
答案 0 :(得分:1)
没有足够的信息可以肯定地知道。脚本的哪个部分不起作用?你说它的一部分呢?
您是否忘记在某些游戏对象的检查器中设置公共变量的值?
如果每个游戏对象标记为“Foc”,那么focGO可能是您添加的最后一个游戏对象,因为它只是寻找一个然后停止检查。
根据所提供的信息,这些是我的猜测。
答案 1 :(得分:1)
focGO = GameObject.FindGameObjectWithTag("Foc");
除非我读错了,否则你的每个实例都会通过其标签查找游戏对象,因此完全有可能他们都找到了同一个(你添加到场景中的最后一个) )。
我相信你可能只想和“这个。[无论如何]”一起去。例如:
scriptFoc = this.GetComponent<Foc>();