Проблема:
Instantiate(objs[UnityEngine.Random.Range(0, objs.Length)], new Vector3(UnityEngine.Random.Range(-47, -20), 2.10f, UnityEngine.Random.Range(-7, 10)), Quaternion.Euler(0, 0, 0));
Решение:
// Получаем ссылку на пустой объект
Transform parentTransform = transform;
// ...
// Создаем клон с локальными координатами
Instantiate(objs[UnityEngine.Random.Range(0, objs.Length)], parentTransform.TransformPoint(new Vector3(UnityEngine.Random.Range(-47, -20), 2.10f, UnityEngine.Random.Range(-7, 10))), Quaternion.Euler(0, 0, 0), parentTransform);
# Оптимизируй свой код, избегай лишних вычислений в цикле Update.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class spawn : MonoBehaviour
{
public float speed = 5f;
public GameObject[] objs = new GameObject[3];
private void Start()
{
StartCoroutine(CreatEnemy());
}
private IEnumerator CreatEnemy()
{
while(true)
{
Instantiate(objs[UnityEngine.Random.Range(0, objs.Length)], new Vector3(UnityEngine.Random.Range(-47, -20), 2.10f, UnityEngine.Random.Range(-7, 10)), Quaternion.Euler(0, 0, 0));
yield return new WaitForSeconds(3f);
}
}
private void Update()
{
for (int i = 0; i < objs.Length; i++)
{
if (objs[i] == null)
continue;
objs[i].transform.Translate(new Vector3(1, 0, 0) * speed * Time.deltaTime);
}
}
}