В игре мне нужно создать определенное кол-во движущихся объектов, у них своя скорость и координаты ,в которых они двигаются, но создавать для каждого объекта скрипт нет смысла, так что лучше будет в инспекторе юнити сделать так, чтобы можно было указывать сколько объектов у меня будет и задавать параметры для них
Выглядит это вот так
А скрипт вот такой
using System.Linq;
using UnityEngine;
public class ObstacleManager : MonoBehaviour
{
[System.Serializable]
public class ObjectsCoords
{
public GameObject dynamicObstacle; // Объект
public Transform[] dynamicCoords; // Координаты точек, к которым двигается объект
public float speed;
public bool isArrivedSecondCoord; // Прибыл ли объект к точке
}
public ObjectsCoords[] dynamicObj;
// Задаем для объекта начальное положение
void Start()
{
for (int i = 0; i < dynamicObj.Length; i++)
{
dynamicObj[i].dynamicObstacle.transform.position = dynamicObj[i].dynamicCoords[0].position;
}
}
void Update()
{
for (int i = 0; i < dynamicObj.Length; i++)
{
// Если объект прибыл на точку, то меняется булевая переменная, благодаря которой объект отправиться обратно
if (dynamicObj[i].dynamicObstacle.transform.position == dynamicObj[i].dynamicCoords[0].position && dynamicObj[i].isArrivedSecondCoord)
dynamicObj[i].isArrivedSecondCoord = false;
if (dynamicObj[i].dynamicObstacle.transform.position == dynamicObj[i].dynamicCoords[1].position && !dynamicObj[i].isArrivedSecondCoord)
dynamicObj[i].isArrivedSecondCoord = true;
// Задаем координаты, куда будет двигаться объект, если он прибыл на точку, то возвращается обратно
if (!dynamicObj[i].isArrivedSecondCoord)
dynamicObj[i].dynamicObstacle.transform.position = Vector2.MoveTowards(dynamicObj[i].dynamicObstacle.transform.position, dynamicObj[i].dynamicCoords[1].position, dynamicObj[i].speed * Time.deltaTime);
if (dynamicObj[i].isArrivedSecondCoord)
dynamicObj[i].dynamicObstacle.transform.position = Vector2.MoveTowards(dynamicObj[i].dynamicObstacle.transform.position, dynamicObj[i].dynamicCoords[0].position, dynamicObj[i].speed * Time.deltaTime);
}
}
}
Мне кажется, что можно написать скрипт лучше и менее загроможденным, чтоб не пришлось все время указывать экземпляр класса или все ок?