MaximGS090909
@MaximGS090909

Почему код работает некорректно?

using UnityEngine;

public class SpawnManager : MonoBehaviour
{
    public GameObject enemyPrefab;
    public GameObject ammoPrefab;
    private int enemyCount;
    private int waveNumber = 1;
    private float spawnRange = 9;

    void Start()
    {
        SpawnEnemyWaveAndAmmo(waveNumber);

    }

    // Update is called once per frame
    void Update()
    {
        enemyCount = FindObjectsOfType<Enemy>().Length;

        if (enemyCount == 0)
        {
            waveNumber++;
            SpawnEnemyWaveAndAmmo(waveNumber);


        }
    }

    private Vector3 GenerateSpawnPosition()
    {
        float spawnPosX = Random.Range(-spawnRange, spawnRange);
        float spawnPosZ = Random.Range(-spawnRange, spawnRange);

        Vector3 randomPos = new Vector3(spawnPosX, 1, spawnPosZ);

        return randomPos;
    }

    private void SpawnEnemyWaveAndAmmo(int enemiesToSpawn)
    {
        Instantiate(ammoPrefab, GenerateSpawnPosition(), ammoPrefab.transform.rotation);
        for (int i = 0; i < enemiesToSpawn; i++)
        {
            Instantiate(enemyPrefab, GenerateSpawnPosition(), enemyPrefab.transform.rotation);
        }
    }
}

Скрипт должен спавнить врагов по волнам, но почему то он бесконечно спавнит врагов сразу, а не по волнам
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Yurenty
In Gamedev we trust
Ты вызываешь функцию "SpawnEnemyWaveAndAmmo" в каждом кадре, через Update, задай ей какой-нибудь временной промежуток вызова, хотя бы через Invoke.
Ответ написан
Комментировать
@awolkov333
Проверь, может скрипт Enemy не прикрепил к врагам, от того enemyCount всегда равно нулю. Если не в этом дело, тогда сделай Debug.Log(enemyCount), возможно поле по какой-то другой причине всегда равно нулю.
Кстати не совсем понимаю зачем вызывать SpawnEnemyWaveAmmo и в Start и в Update.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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