При создании сборного танка сначала создайте Пустой Объект, который будет содержать остальные объекты.Это будет родительский объект для остальных.Затем добавьте объекты деталей.
Когда вы снимаете корпус, вы просто заменяете его другим корпусом, и, поскольку турель не является дочерним элементом объекта корпуса, она не будет затронута и будет двигаться так, как она двигалась раньше..
Редактировать 1: Уточнение: каждый объект - это отдельный танк (я назову его танком, если вы не возражаете).Поскольку в вашем вопросе сначала не упоминались изменения, я соответствующим образом обновлю свой ответ.Каждый танк будет содержать 1 корпус, 1 турель и 4 мода турелей в иерархии.
Итак, что вы должны сделать:
- Сделать пустой объект в сцене, назовите его Tank;
- Добавить сценарий как компонент, назовите его Tank;
- Этот сценарий будет создавать подклассы MonoBehaviour;
- Добавить свойства Hull, Turret, Mods в сценарии, это Game Objectсвойства за исключением Модов, который является списком игровых объектов.
- Добавьте игровой объект корпуса (который, я полагаю, у вас уже есть) к игровому объекту танка.Убедитесь, что он расположен правильно.Добавьте объект Turret GO в качестве дочернего объекта Hull и объект GO в качестве дочернего элемента Turret.
- К каждому корпусу, Turret и Modification должны быть прикреплены сценарии.
- В сценарии Hull должно быть свойство snappingPosition типа Position.Башня должна иметь список позиций с именем snappingPositions.
- После правильного позиционирования объектов обратите внимание на их компоненты Transform.Значения позиции трансформации каждого объекта важны для вас, потому что, если каждый корпус имеет разную высоту или выравнивание, точка привязки будет иметь другую позицию.Что вы хотите сделать, это сохранить эту точку привязки для каждого игрового объекта Hull внутри сценария Hull.Так что продолжайте и сохраните позицию Турреты как точку привязки в позициях Халла и Модов в snappingPoints of Turret.
- Замените Турель на другую в той же позиции, что и текущая точка привязки Халла, и выровняйте модификацию должным образом.Сохраните позиции Модификаций в качестве точек привязки для этой башни.
- Повторяйте 9, пока не закончите для всех турелей.
- Замените объект Корпуса и правильно выровняйте турель.Сохраните позицию Туррета как позицию привязки Халла.Повторите эти действия для всех 3 корпусов.
Теперь каждый раз, когда вы переключаете корпус / турель / модификацию при редактировании, просто заменяйте турель, переносите все модификации с помощью SetParent (их компонента Transform?), Настраивая ихпозиции для привязки позиций из сценария башни, затем настройте положение башни в привязке позиции для сценария Халла и уничтожьте старую башню.
Редактировать 2: Теперь я понял, что это корпус, в котором есть модификации, а не башни.Поэтому в Hull должны быть сохранены позиции модов как свойство modsSnappingPoints.А когда вы меняете корпус, вы перемещаете все моды на новый, обновляете позиции, перемещаете турель, обновляете позиции, а затем удаляете старый корпус.