@Oleg_KeyKode

Как постоянно спавнить объекты в юнити 3д?

Нужно сделать так чтобы при нажатии на кнопку спавнились объекты с интервалом в 0.5 секунд, и каждый объект должен удалиться через 2 секунды.
Мое решение не работает, выдает ошибку

public GameObject gameObject;

    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            while (true)
            {
                yield return new WaitForSeconds(0.5f);
                Instantiate(gameObject);

                Destroy(gameObject, 2f);
            }


        }
    }
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
@always_drunkking
Если тебе надо постоянно спавнить объекты
void Start()
{
InvokeRepeating("Spawn",0f,0.5f);
}

void Spawn()
{
GameObject instance = Instantiate(gameObject);
instance.AddComponent<DeleteAfterTwoSeconds>();
}


Создай скрипт назови его DeleteAfterTwoSeconds
заведи переменную флоат и в апдейте отнимай у нее Time.deltaTime. а когда она станет меньше или равна нулю вызывай Destroy(gameObject)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
freeExec
@freeExec
Участник OpenStreetMap
Потому что yield return new WaitForSeconds(0.5f); должен участвовать только в корутинах. А в голом апдейте надо запоминать время (класс Time) нажатия и проверять когда уже прошло нужное количество секунд.
Ответ написан
Yokibaru
@Yokibaru
node.js, c#, UI
Как уже и сказал freeExec yield return используется в Coroutines, если не знаешь что это, то вот тебе доки юньки (тут всё ясно и подробно описано)
https://docs.unity3d.com/Manual/Coroutines.html

p.s: есть переводчик, переведи английский и поймёшь на 100%

p.p.s:если нужен пример кода, то там тоже всё есть и довольно подробно всё показано
удачки
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы