Почему код не работает. Это из-за FixUpdate и Void Start??
Как сделать эту задержку????? Я уже много способов перепробовал.
StartCoroutine должно запускатся не в начале сцены??
using System.Collections;
using UnityEngine;
public class SpawnBox : MonoBehaviour
{
public float miliSecond;
public float second;
public GameObject bomb;
public void FixedUpdate()
{
miliSecond += 0.02f;
if (miliSecond >= 1f)
{
second++;
miliSecond = 0f;
}
}
void Start()
{
if (second >= 1f)
{
StartCoroutine(Spawn());
}
}
IEnumerator Spawn()
{
while (!Player.lose)
{
Instantiate(bomb, new Vector2(Random.Range(-2.5f, 2.5f), 5.9f), Quaternion.identity);
yield return new WaitForSeconds(2f);
Код в Start выполняется при старте скрипта (грубо говоря) и раньше чем FixedUpdate. На этот момент second еще будет равна 0. И никакая корутина не выполнится.
coutBohdan, ну можно так как вы пытаетесь - только проверку секунд делать в том же FixedUpdate.
А можно прям в Start без всяких условий запустить корунтину и уже в ней сначала пропустить нужное количество секунд.
Подсчет времени у вас кстати совершенно неправильный.
GavriKos, ну, я просто в это месиво из букв даже вглядываться не хочу, просто прочитал "как сделать задержку", вот и ответил - Invoke. Чето стремно делать задержки с помощью рутин.