Как сделать респавн rigidbody объектов?

В чём суть, у меня на сцене имеются различные Rigidbody объекты, игрок их может толькать, поворачивать и делать всё что захочется, а также игрок может умирать и возрождаться и я нигде не могу найти, как сделать так, что бы при возрождении все rigidbody объекты вставали в своё исходное положение


Ответы (1 шт):

Автор решения: Strange Coder
  1. Задаете объектам, которые будете ставить на место, какой-нибудь тег (допустим ToBase)

  2. Создаете скрипт, отвечающий за восстановление объектам (условно ObjectController), и вешаете его на какой-нибудь объект

  3. В нем объявляете массив с вектором позиции для восстановления и массив с объектами, у которых восстанавливать:

    private Vector3[] _basePosArray;
    private GameObject[] _baseObjectsArray;
    
  4. Находите объекты для восстановления по тегу и засовываете их в массив, а оттуда уже наполняете массив позиций:

    void Start()
    {
       _baseObjectsArray = GameObject.FindGameObjectsWithTag("ToBase");
       for (int i = 0; i < _basePosArray; i++)
       {
           _basePosArray[i] = _baseObjectsArray[i].transform.position; 
       }
    }
    
  5. Добавляем метод восстановления базовой позиции:

    public void RespawnObjects()
    {
        for (int i = 0; i < _basePosArray; i++)
        {
           _baseObjectsArray[i].transform.position = _basePosArray[i]; 
        }
    }
    
  6. Далее в классе вашего персонажа объявляем наш недавно созданный класс, а затем в инспекторе накидываем туда объект на котором висит скрипт с ним:

     public ObjectController controller;
    
  7. И последнее в коде нашего персонажа при его смерти вызываем респавн объектов:

     void PlayerDie()
     {
         controller.RespawnObject();
     }
    
→ Ссылка