首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一波又一波的敌人Unity3D

一波又一波的敌人Unity3D
EN

Stack Overflow用户
提问于 2014-12-09 07:17:47
回答 1查看 5.1K关注 0票数 0

我正在开发一款游戏,在这款游戏中,我想要产生一波又一波的敌人。在每一波敌人中,我从不同的产卵点产卵。例如,我有6个产卵点,第一波敌人从第四个点产生,第二波从第一个点产生,依此类推。

我写了一个代码,让我产生一波又一波的敌人,但我的问题是,它会从第一波敌人的所有6个产卵点产生敌人的浪潮。

当我点击play时,我有来自6个产卵点的敌人波,而不是每个波的一个产卵点。

代码语言:javascript
复制
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);
     }
 }
 }
EN

回答 1

Stack Overflow用户

发布于 2014-12-09 08:09:58

由于spawnPointIndex是在循环内部挑选的,因此它为wave中的每个危险挑选一个新的随机产生点。如果你想让它使用相同的产生点,那么在危险循环之外但在waves while(true)循环内选择spawnPointIndex:

代码语言:javascript
复制
 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27368815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档