【问题标题】:Trigger...Spawn...Destroy Unity 3D触发...生成...摧毁 Unity 3D
【发布时间】:2014-10-27 20:59:53
【问题描述】:

我遇到了一个小问题。一旦我击中触发器,我就想要一个敌人产卵。我只想要场上的一个敌人。现在,当我再次按下扳机时,我希望场上的敌人在下一个敌人即将产生时自行摧毁它。关于如何做到这一点的任何想法?我是否对此使用“销毁”分配?这是我所拥有的:

 public GameObject Enemy;
 public float mytimer;


 void Start()
 {
     GameObject player = GameObject.Find("Player");
 }

 void spawnEnemy() {
     Transform enemy;
     GameObject enemySpawnPoint =      GameObject.Find("EnemySpawn");
     enemy =  Instantiate(Enemy,enemySpawnPoint.transform.position,enemySpawnPo int.transform.rotation) as Transform; 
 }

 void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.name == "EnemyTrigger") {
         mytimer = Random.Range(0,10);
         Invoke("spawnEnemy", mytimer);
         Debug.Log("Spawn Normal");

         }
     }

     }

【问题讨论】:

  • 我怀疑 other.gameObject.name == "EnemyTrigger" 导致你没有进入你的 if 语句,因为其余的对我来说看起来不错。您可以在 if 之外但在 OnTriggerEnter 内放置一个调试日志,看看它是否被调用?

标签: c# triggers unity3d destroy


【解决方案1】:

您可以将您的敌人存储到一个私有变量中,并在每次实例化一个新变量之前将其销毁。这样一来,您将只拥有其中一个。

private GameObject enemy = null;
void spawnEnemy() {
    if(enemy != null){
        Destroy(enemy);
    }
    GameObject enemySpawnPoint =      GameObject.Find("EnemySpawn");
    enemy =  Instantiate(Enemy,enemySpawnPoint.transform.position,enemySpawnPo int.transform.rotation) as GameObject; 
}

【讨论】:

    猜你喜欢
    • 2021-04-02
    • 2022-07-22
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    相关资源
    最近更新 更多