C# 如何阻止敌人在Unity 3D中繁殖?
我想阻止敌人在其中一个命中“完成”标记时产卵 以下是产生敌人的脚本:C# 如何阻止敌人在Unity 3D中繁殖?,c#,unity3d,C#,Unity3d,我想阻止敌人在其中一个命中“完成”标记时产卵 以下是产生敌人的脚本: public class spawn : MonoBehaviour { public GameObject enemy; private float spawnpoint; public float xlimit = 12f; float spawnNewEnemyTimer = 1f; void Start() { } public void Upda
public class spawn : MonoBehaviour {
public GameObject enemy;
private float spawnpoint;
public float xlimit = 12f;
float spawnNewEnemyTimer = 1f;
void Start()
{
}
public void Update()
{
spawnNewEnemyTimer -= Time.deltaTime;
if (spawnNewEnemyTimer <= 0 )
{
spawnNewEnemyTimer = 3;
GameObject nemico = Instantiate(enemy);
}
}
这个代码怎么了?谢谢 产生新敌人的逻辑在spawn类中。决定是否应该停止繁殖敌人的逻辑驻留在敌人类中 只要你想让敌人在命中带有finish标记的对象时停止繁殖,你就可以成功地将end game布尔值设置为true
void OnTriggerEnter(Collider other){
if (other.tag == "Finish"){
Debug.Log("hai perso!");
endGame = true;
}
}
太好了!但实际上你并没有用它来阻止繁殖。
到目前为止,这个变量是每个敌人的局部变量。因此,如果在“开始”和“更新”功能中包含检查,则它们将仅为接触“完成”对象的特定敌人激活。这不是你想要的
您希望Spawn类检查endgame变量,如果它处于活动状态,则停止生成敌人
要做到这一点,您必须能够以某种方式从Spawn访问endgame变量,我建议您将endgame变量设置为te Spawn类的成员。并在每个敌人中包含对繁殖的引用
总之,它可能看起来像这样:
public class Spawn: MonoBehaviour{
public boolean endgame = false;
GameObject nemico = Instantiate(Enemy);
nemico.ParentSpawn = this
}
public class Enemy: MonoBehaviour{
public Spawn spawn;
void OnTriggerEnter(Collider other){
if (other.tag == "Finish"){
Spawn.endGame = true;
}
}
}
然后,您可以使用“产卵”中的endgame布尔值来检查是否应该继续产卵敌人
public class Spawn: MonoBehaviour{
public boolean endgame = false;
GameObject nemico = Instantiate(Enemy);
nemico.ParentSpawn = this
}
public class Enemy: MonoBehaviour{
public Spawn spawn;
void OnTriggerEnter(Collider other){
if (other.tag == "Finish"){
Spawn.endGame = true;
}
}
}