【问题标题】:Wave spawner and wave number for typing game用于打字游戏的波生成器和波数
【发布时间】:2019-01-10 13:50:06
【问题描述】:

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

在 WordSpawner.cs 文件中,我希望单词以波的形式生成,就像第一波有 2 个单词,一旦正确输入,下一个波将在大约 5 秒的延迟后开始,并将有 3 个词等等。每波单词的数量应该增加 1,并且会在玩家活着的时候继续这样做。

一波完成后,等待时间内会显示一个波数,然后下一波开始。

这是单词 spawner 的脚本:

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);
}

【问题讨论】:

  • 您的预期行为是什么,您得到的实际行为是什么? 我认为是因为上面的 SpawnWord() 方法有一个返回类型,然后这个函数在一个单独的文件“WordManager”中被调用。不,这没有任何关联。
  • @Immorality,我希望这种行为在一个叫做 z-type 的游戏中是这样的。现在它只是开始产生大量单词而没有产生任何波。

标签: c# unity3d


【解决方案1】:

假设你的问题是如何让 spawner 这个词在波浪中工作,我会做以下事情:

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

看起来你已经知道了生成和移除这个词,所以我将在第 2 部分专注于跟踪游戏状态。

现在对我们来说幸运的是,Unity 为我们提供了更新功能,它将运行每一帧。从这里我们需要做的两件事是检查列表中有多少活跃词,我们需要一个计时器来跟踪我们在波之间的延迟。

为了实现这一点,您需要在 Update 函数中运行一些代码来检查列表是否为空,并检查计时器是否已过期(即波之间的延迟)。从那里,如果您发现波已结束且计时器已过期的情况,请调用您的函数以产生新的单词波。

如果您想增加每个 wave 生成​​的数量,请保留一个在每次 wave 运行时递增的类整数,并将其作为生成字数的参数提供。

如果我有什么不清楚的地方,请告诉我,我会尽力解释。

【讨论】:

  • 感谢您的回复。我将尝试实施您的建议。如果有任何进一步的问题,会通知您。
猜你喜欢
  • 1970-01-01
  • 2011-01-23
  • 2013-02-27
  • 2012-05-02
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-03-05
  • 2010-12-23
相关资源
最近更新 更多