У меня есть игра типа Fruit Ninja, сделанная в Unity. Фрукты появляются в сцене, когда вы нажимаете на них, они уничтожаются, и вы получаете 1 очко за каждый фрукт, которое отображается на панели очков. Я хочу реализовать механику увеличения очков, например, такую: Когда вы нажимаете на объект с тегом "scoreBoost", в течение следующих 5 секунд каждое нажатие на любой фрукт будет давать вам дополнительно 1 очко.
У меня есть несколько основных скриптов: gameManager и target. В скрипте gameManager есть метод UpdateScore, который показывает текущий счет на панели очков. Я перепробовал множество вариантов с корутинами и циклами, в итоге остановился на этом. Вот метод OnMouseDown для целевого srcipt:
private void OnMouseDown()
{
if (gameManager.isGameActive)
{
if (gameObject.CompareTag("scoreBoost"))
{
StartCoroutine(ApplyScoreBonus());
}
while (scoreBonus == true)
{
Destroy(gameObject);
Instantiate(exposionParticle, transform.position, Quaternion.identity);
gameManager.UpdateScore(pointValue + 1);
}
Destroy(gameObject);
Instantiate(exposionParticle, transform.position, Quaternion.identity);
gameManager.UpdateScore(pointValue);
}
}
Код корутины ApplyScoreBoost:
IEnumerator ApplyScoreBonus()
{
scoreBonus = true;
yield return new WaitForSeconds(5);
scoreBonus = false;
}
Когда я нажимаю на объект с тегом "scoreBoost", игра просто замирает.