【问题标题】:Spawning waves of enemies Unity3D产生敌人的波Unity3D
【发布时间】:2014-12-08 23:17:46
【问题描述】:

我正在开发一款游戏,我想在其中生成一波又一波的敌人。在每一波敌人中,我从不同的生成点生成。例如,我有 6 个生成点,第一波敌人从第 4 点生成,第二波从第 1 点生成,等等。

我写了一个代码,让我生成一波波敌人,但我的问题是它从第一波敌人中的所有 6 个生成点生成一波波敌人。

当我点击播放时,我有来自 6 个重生点的一波敌人,而不是每一波的一个重生点。

using UnityEngine;
using System.Collections;

public class Waves : MonoBehaviour
 {
 public GameObject Enemy = null;

 public int hazardCount = 3;
 public float spawnWait=0.5f;
 public float startWait=1;
 public float waveWait=4;            
 public Transform[] spawnPoints; 

 void Start ()
 {
     StartCoroutine(SpawnWaves ());
 }

 IEnumerator SpawnWaves ()
 {
     yield return new WaitForSeconds (startWait);
     while (true)
     {
         for (int i = 0; i < hazardCount; i++)
         {
             int spawnPointIndex = Random.Range (0, spawnPoints.Length);

             Instantiate (Enemy, spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation);

             yield return new WaitForSeconds (spawnWait);
         }
         yield return new WaitForSeconds (waveWait);
     }
 }
 }

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    因为 spawnPointIndex 是在循环中被选取的,所以它会为波中的每个危险物选取一个新的随机生成点。如果您希望它使用相同的生成点,则在危险循环之外但在波 while(true) 循环内选择 spawnPointIndex:

     IEnumerator SpawnWaves ()
     {
         yield return new WaitForSeconds (startWait);
         while (true)
         {
             // Only pick a new spawn point once per wave
             int spawnPointIndex = Random.Range (0, spawnPoints.Length);
    
             for (int i = 0; i < hazardCount; i++)
             {
                 // here would pick a new spawn point for each new enemy
                 Instantiate (Enemy, spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation);
    
                 yield return new WaitForSeconds (spawnWait);
             }
             yield return new WaitForSeconds (waveWait);
         }
     }
    

    还可以考虑从对象池中拉出敌人,而不是每次都实例化新的。它会更有效率。见http://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/object-pooling

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多