用来产生游戏的Wave产生器和Wave编号

时间:2019-01-10 13:50:06

标签: c# unity3d

我正在尝试创建一个单词输入游戏,其中单词从屏幕顶部掉落。我已使用here提供的代码开始使用:

在WordSpawner.cs文件中,我希望单词以波浪的形式产生,例如第一个波浪将有2个单词,并且正确键入后,下一个波浪将在大约5秒钟的延迟后开始并具有3个单词话语等等。每一波中的单词数应增加1,并且在播放器还活着的时候将继续这样做。

一个波完成后,将在等待时间内显示一个波编号,然后下一个波开始。

这是生成器一词的脚本:

public GameObject wordPrefab; 
public Transform wordCanvas; 

public WordDisplay SpawnWord () {

  Vector3 randomPosition = new Vector3(Random.Range(-2.5f, 2.5f), 7f); 
  GameObject wordObj=Instantiate(wordPrefab, randomPosition,Quaternion.identity, wordCanvas); 
  WordDisplay wordDisplay = wordObj.GetComponent<WordDisplay>(); 
  return wordDisplay;
  } 

我尝试跟随官方的统一太空射击游戏来产生敌人,但我无法使其正常工作。我认为是因为上面的SpawnWord()方法具有返回类型,然后在单独的文件“ WordManager”中调用此函数。这个脚本来自单词管理器文件:

public class WordManager : MonoBehaviour {

public List<Word> words;// list of 50 words 

public WordSpawner wordSpawner;

private bool hasActiveWord;
private Word activeWord;

public void AddWord ()
{
    Word word = new Word(WordGenerator.GetRandomWord(), wordSpawner.SpawnWord()); // this is where the SpawnWord() is called
    words.Add(word);
}

1 个答案:

答案 0 :(得分:0)

假设您的问题是如何使“ spawner”一词发挥作用,我将执行以下操作:

该问题可分为3部分: 1)追踪玩家输入所有所需单词的时间。 2)运行计时器以延迟下一波的开始。 3)生成单词。

看起来您已经有了“生成和移除”这个词,所以在第二部分中,我将重点介绍游戏状态。

现在对我们来说幸运的是Unity为我们提供了Update函数,它将在每一帧运行。从这里开始,我们需要做的两件事是检查列表中有多少个活动单词,并且我们需要一个计时器来跟踪波形之间的延迟。

为了完成此操作,您需要在代码中运行Update函数,以检查列表是否为空,并检查计时器是否已过期(即两次波形之间的延迟)。从那里,如果您发现波动结束并且计时器到期的情况,请调用函数以产生新的波动词。

如果要增加每个wave产生的数量,请保留每次运行wave时都会增加的类整数,并将其作为产生多少个单词的参数提供。

如果我不清楚任何事情,请告诉我,我会尽力解释。