Esempio n. 1
0
    private IEnumerator InvokeEnemy(EnemyConfiguration enemyConfiguration)
    {
        var enemy = Instantiate(enemyConfiguration.Enemy, enemyConfiguration.Points()[0].transform.position, Quaternion.identity);

        enemy.GetComponent <Enemy>().EnemyConfiguration = enemyConfiguration;
        yield return(new WaitForSeconds(enemyConfiguration.TimeBreakBeetwenEnemies * Random.Range(0.5f, 1f)));
    }
Esempio n. 2
0
    void SpawnNextBiome()
    {
        terrainMap.DisplayNextBiome();
        nextBiomeTimer = nextBiomeTimeDelay;

        EnemyConfiguration nextEnemyType = enemyTypes[UnityEngine.Random.Range(0, enemyTypes.Length)];
        GameObject         newEnemy      = (GameObject)Instantiate(nextEnemyType.Prefab);

        newEnemy.GetComponent <NavMeshAgent>().speed = nextEnemyType.speed;
        newEnemy.transform.position = terrainMap.GetRandomTileOnCurrentBiome().transform.position;
        newEnemy.transform.parent   = this.gameObject.transform;
        newEnemy.name = nextEnemyType.name;
        newEnemy.GetComponent <Enemy>().Health = 10;
    }
Esempio n. 3
0
        /// <summary>
        /// spawn the enemy
        /// </summary>
        /// <param name="enemyconfig">怪</param>
        /// <param name="node">出怪点</param>
        protected virtual void SpawnEnemy(EnemyConfiguration enemyconfig, Node node)
        {
            Vector3 spawnPosition = node.transform.position;

            var poolable = Poolable.TryGetPoolable <Poolable>(enemyconfig.EnemyPrefab.gameObject);

            if (poolable == null)
            {
                return;
            }
            var enemyInstance = poolable.GetComponent <Enemy>();

            enemyInstance.transform.position = spawnPosition;
            enemyInstance.Initialize();
            enemyInstance.SetNode(node);
            enemyInstance.transform.rotation = node.transform.rotation;
        }