Я работаю над 2D-игрой в Unity.Игра ограничена 60 секундами.Я хотел бы иметь бомбу замедленного действия, которая вызывает сокращение времени, когда игрок поражает бомбу.
В моем сценарии у меня есть логическое значение, которое называется "hitDetect"
, и я использую Coroutine()
для обратного отсчета.
Я пытался подтолкнуть бомбу к правой стороне, когда игрок ударил бомбу, а затем проверить, происходит ли столкновение, с помощью следующих кодов:
void OnCollisionEnter2D(Collision2D bombcol)
{
if(bombcol.gameObject.tag == "Enemy")
{
bombcol.gameObject.GetComponent<Rigidbody2D>().AddForce(transform.right * hitForce);
}
hitDetect = true;
}
Это моя Coroutine()
функциячто дает мне возможность иметь игру, которая успешно ограничена 60 секундами, за исключением штрафа времени:
IEnumerator LoseTime()
{
while (true) {
yield return new WaitForSeconds (1);
timeLeft--;
if (hitDetect == true)
{
timeLeft= timeLeft - 5;
}
}
}
Я также установил "hitDetect"
как ложное в стартовом теле.
void Start ()
{
StartCoroutine("LoseTime");
hitDetect = false;
}
Однако эти методы не приводят меня к успеху.Когда игрок ударил бомбу, штраф времени не работает.Где моя ошибка?Чтобы вы посоветовали?