vodimak
@vodimak

Как сделать рандомный спавн нескольких объектов в 1 скрипте?

короче я совсем новичок и не понимаю очевидных вещей, делаю игру и сверху должны спавниться метеориты, но в моём скрипте можно поставить только 1 объект. если несколько скриптов набросить, то будет неиграбельно. помогите доработать скрипт что-бы спавнились 1 или несколько рандомных метеоритов за раз (всего их 9 видов).
вот код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RandomSpawn : MonoBehaviour
{
    [SerializeField]
    private GameObject obj;
    float RandX;
    Vector2 whereToSpawn;
    [SerializeField]
    private float spawnRate = 2f;
    float nextSpawn = 0.0f;
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
       if(Time.time > nextSpawn) 
       {
              nextSpawn = Time.time + spawnRate;
              RandX = Random.Range(-20f, 20f);
              whereToSpawn = new Vector2(RandX, transform.position.y);
              Instantiate(obj, whereToSpawn, Quaternion.identity);
       }
    }
}
  • Вопрос задан
  • 861 просмотр
Решения вопроса 1
@Ente
Unity developer
Почему неиграбельно? Создай один префаб - это будет главный образец для метеоритов. Затем создай наследованные префабы от него и дай им уникальные характеристики, например размер, спрайт, какие-то настройки скриптов. Затем создай один скрипт MeteorSpawner. Затем можешь набросать несколько скриптов и каждому выставить уникальные значения, либо разделить на разные GameObject'ы.

[SerializeField] private GameObject prefab;
[SerializeField] private Vector2 minPos;
[SerializeField] private Vector2 maxPos;
[SerializeField] private Vector2 spawnRate;

private IEnumerator Start()
{
     while (true)
     {
          yield return new WaitForSeconds(Random.Range(spawnRate.x, spawnRate.y));
          var pos = new Vector2(Random.Range(min.x, max.x), Random.Range(min.y, max.y));
          Instantiate(prefab, pos, Quaternion.identity);
     }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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