无论速度如何,连续生成4个正方形



我有一个函数,它在一行中生成4个对象,这些对象向下移动。我想在前面的4个对象之上继续生成4个对象,但我想避免这些行之间有空的水平空间。把它想象成一个棋盘或任何正方形向下无限滚动的棋盘,我不断产生的4个对象是棋盘正方形。

这是我当前的函数,它在水平方向上生成4个对象,我有一个协同程序,它以随机间隔调用

public void CreateLetter()
{
var wordLetters = randomChosenWord.ToCharArray();
for (int i = 0; i < letterPlacements.Length; i++)
{
var chosenLetter = wordLetters[Random.Range(0, wordLetters.Length)];
//Do not spawn too much duplicates
var numberOfSameLetters = FindObjectsOfType<LetterController>().Where(l => l.Letter == chosenLetter).ToList().Count;
var lettersAlreadyChosen = FindObjectOfType<PlayerControls>().playerChosenLetters;
//Did player choose any letter already? spawn that letter less
if (numberOfSameLetters > (lettersAlreadyChosen.IndexOf(chosenLetter) != -1 ? 1 : 2))
{
var trimmedRandomWord = randomChosenWord.Trim(chosenLetter);
chosenLetter = trimmedRandomWord[Random.Range(0, trimmedRandomWord.Length)];
}
GameObject letter = Instantiate(letterPrefab);
letter.transform.position = new Vector2(letterPlacements[i].transform.position.x, letterPlacements[i].transform.position.y + 1);
letter.GetComponent<SpriteRenderer>().sprite = letterSprites[alphabet.IndexOf(char.ToUpper(chosenLetter))];
letter.GetComponent<LetterController>().Letter = chosenLetter;
}
}

是否应该检查新的四个正方形位置是否会与之前的四个位置发生冲突?有什么想法或建议吗?

经过一番挖掘和计算,我发现我真正需要的是反比

为了使协同程序在前4个生成后生成4个正方形(以便它们完全对齐(,我使用正方形的移动速度,然后计算协同程序应该再次运行并生成另外4个正方形的时间。换句话说,移动速度越大,协同程序功能重复的速度就越快:

IEnumerator GenerateLetters()
{
while(randomChosenWord.Length > 0)
{
yield return new WaitForSeconds(1 / (movementSpeed * 0.5f));
CreateLetter();
}
}

这是附在方形预制对象上的脚本中的更新函数:

// Update is called once per frame
void Update()
{
//Move letter downwards
transform.position = new Vector2(transform.position.x, transform.position.y - movementSpeed * Time.deltaTime / 2);
gameObject.GetComponentInChildren<TextMesh>().text = Letter.ToString();
}

最新更新