Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+1

Подскажите пж как исправить скрипт в Unity

как сделать чтобы созданные клоны тоже находились внутри пустого объекта. Закинул скрипт создания в этот объект но всё равно клоны спавнится за его пределами


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);
}

}
}

По дате
По рейтингу
Аватар пользователя
Профи

Проблема:

1
 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));  

Решение:

1234567
 // Получаем ссылку на пустой объект  
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.