using System.Collections.Generic; using UnityEngine; public class FortInitializer : MonoBehaviour { [SerializeField] private GameObject[] forts; [SerializeField] private List effects; // частицы на сцене public GameObject fort; public CannonBattery EnemyBattery; public EnemyCommand EnemyCommand; public GameManager gameManager; public PirateCommand pirateCommand; [SerializeField] private Сaptain cap; private void Start() { SpawnFort(0); } public void FortSwitch(int index) { SpawnFort(index); } private void SpawnFort(int index) { if (fort != null) { Destroy(fort); } // Создаём форт как дочерний объект текущего объекта (или можешь передать любой другой transform) fort = Instantiate(forts[index], transform); // Теперь он в локальных координатах, поэтому нужно задать локальную позицию fort.transform.localPosition = forts[index].GetComponent().Poz; fort.transform.localRotation = Quaternion.identity; fort.transform.localScale = Vector3.one; Fort fortScript = fort.GetComponent(); EnemyBattery = fortScript.EnemyBattery; EnemyCommand = fortScript.EnemyCommand; gameManager.enemyBattery = EnemyBattery; EnemyCommand.pirateTeam = pirateCommand; pirateCommand.enemyTeam = EnemyCommand; pirateCommand.ResetAllPiratesToHome(); if (cap != null) cap.enemyTeam = EnemyCommand; gameManager.battery.ResetAllCannons(); // Запускаем эффект для текущего индекса if (index < effects.Count && effects[index] != null) { effects[index].Play(); } } }