@Gregory256

Как передать позицию объекта скрипту, который висит на другом объекте без занесения в инспектор?

Как передать позицию объекта скрипту, который висит на другом объекте без занесения в инспектор? Есть два объекта(шар и куб) необходимо синхронизировать движение, то есть при движении куба должен двигаться и шар. Без использования инспектора. Возможно стоит использовать триггеры, однако это будет захламлять сцену. Создавал скрипт на шар, где присваивал Rigidbody и через него пытался получить доступ к перемещению шара в скрипте куба, однако не выходит. Использовать Find не хочу, ибо в дальнейшем на сцене будет много объектов и не хочется усложнять процесс.
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
@Ente
Unity developer
Сделай себе скрипт MovementSyncer.cs и пропиши в нем такой код
[SerializedField] private bool isLeader; //переменная указывает, что данный объект лидер, а остальные повторяют
[SerializedField] private string category; //переменная для разделения объектов на категории, например категория "синие", "красные"
private MovementSyncer leader; //переменная для кеширования лидера на старте

private void Awake() 
{
    //найди объект-лидер для данной категории
    leader= FindObjectsOfType<MovementSyncer>().First(ms => ms.category == category && ms.isLeader);
}

private void Update()
{
    if (isLeader) return; //пропускаем себя, еcли лидер
    transform.position = leader.transform.position;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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