我正在尝试创建一个单词打字游戏,其中单词从屏幕顶部落下。我已经使用了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;
} 我试着跟随官方的unity空间射手来创建敌人,但我无法让它工作。我想这是因为上面的SpawnWord()方法有一个返回类型,然后这个函数在一个单独的文件"WordManager“中被调用。下面是word管理器文件中的脚本:
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);
}发布于 2019-01-11 01:15:21
假设您的问题是如何让单词spawner在wave中工作,我将执行以下操作:
这个问题可以分成3个部分: 1)跟踪玩家何时输入了所有需要的单词。2)运行计时器以延迟下一波的开始。3)生成单词。
看起来您已经掌握了派生和删除这个词,所以在第2部分中,我将重点关注跟踪游戏状态。
现在,幸运的是,Unity为我们提供了更新功能,它将运行每一帧。从这里我们需要做的两件事是检查我们的列表中有多少活跃的单词,我们需要一个计时器来跟踪波之间的延迟。
为了实现这一点,你需要在to函数中运行一些代码来检查列表是否为空,并检查计时器是否已经过期(这是波之间的延迟)。从那里,如果你发现wave已经结束并且计时器过期的情况,调用你的函数来产生新的单词浪潮。
如果您想要增加每个wave产生的数量,请保留一个类整数,该整数在每次wave运行时都会递增,并将其作为生成多少个单词的参数提供。
如果我有什么不清楚的地方,请让我知道,我会尽力解释的。
https://stackoverflow.com/questions/54130157
复制相似问题