/// <summary> /// Создать на сцене танк согласно описанию /// </summary> /// <param name="description">Скриптовый объект с описанием</param> private void SpawnPlayerTank(TankScriptableObject description) { //Копируем описание var descriptionInstance = Instantiate(description); TankCore newTank = _tankPool; if (_tankPool.gameObject.activeInHierarchy == false) { newTank.transform.position = new Vector3(Random.Range(-MaximumSpawnPosition, MaximumSpawnPosition), 1.5f, Random.Range(-MaximumSpawnPosition, MaximumSpawnPosition)); newTank.TankDescription = descriptionInstance; newTank.gameObject.SetActive(true); PlayerSpawnedEvent.Invoke(); PlayerSpawnedEvent.TransformInvoke(newTank.transform); } else { Debug.Log("Танк уже создан на сцене"); } }
public void OnAwake() { //Грузим ресурсы скриптовых объектов _enemiesData.AddRange(Resources.LoadAll <EnemyScriptableObject>("ScriptableObjects/Enemies").ToList()); _tanksData.AddRange(Resources.LoadAll <TankScriptableObject>("ScriptableObjects/Tanks").ToList()); //Object pooling for (int i = 0; i < EnemyCount; i++) { GameObject enemy = Instantiate(EnemyPrefab); enemy.SetActive(false); _enemyPool.Add(enemy.GetComponent <EnemyCore>()); } GameObject tank = Instantiate(TankPrefab); tank.SetActive(false); _tankPool = tank.GetComponent <TankCore>(); //Подписываемся на события EnemyKilledEvent.OnGameEvent += SpawnRandomEnemy; PlayerKilledEvent.OnGameEvent += SpawnRandomTank; }
public MoveState(TankControllingManager controllingManager) : base(controllingManager) { _controllingManager = controllingManager; _player = ManagerContainer.Get <SpawnManager>().SpawnedTank; }