/// <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;
        }
Exemplo n.º 3
0
 public MoveState(TankControllingManager controllingManager) : base(controllingManager)
 {
     _controllingManager = controllingManager;
     _player             = ManagerContainer.Get <SpawnManager>().SpawnedTank;
 }