Задать вопрос
@LimonixPts
Кратко о себе

Мне нужно сделать спавнер на Unity3D?

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

Написал код, но когда тестирую объект спавнится один раз и всё

вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Spawner : MonoBehaviour
{
    [SerializeField] private GameObject spike;

    [SerializeField] private float timeBtwSpawn;
    [SerializeField] private float startTimeBtwSpawn;

    [SerializeField] private float decreaseTime;
    [SerializeField] float minTime;

    private void Update()
    {
        if(timeBtwSpawn <= 0)
        {
            Instantiate(spike, transform.position, Quaternion.identity);
            timeBtwSpawn = startTimeBtwSpawn;
            if (startTimeBtwSpawn > minTime)
            {
                startTimeBtwSpawn -= decreaseTime;
            }
            else
            {
                timeBtwSpawn -= Time.deltaTime;
            }
        }
    }
}


мне бы было приятно если бы вы ответили на данный вопрос

Скажу сразу я новичек в гейм деве и поэтому код плохой
  • Вопрос задан
  • 329 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
KraGenDeveloper
@KraGenDeveloper
Unity Developer
Корутину юзать нужно а не апдейт.
IEnumerator SpawnObject()
    {
        while (true)
        {
            yield return new WaitForSeconds(timeBtwSpawn);
            Instantiate(spike, transform.position, Quaternion.identity);
            // Мутишь условие что бы остановить корутину например если объектов более 10
        }
    }


для старта - StartCoroutine(SpawnObject());

Для остановкиStartCoroutine(SpawnObject());
Всё
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
Если вы собрались программировать, то нужно включать свою логику.
Вот вы говорите у вас спавн работает одни раз. Значит очевидно что в ваш IF выполнение кода не заходит. Следовательно проблема в условие. А поэтому надо пойти и проверить, чему же оно на самом деле равняется. Думаю это сразу натолкнёт на мысли, где у вас ошибка.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы