void SpawnDetection()
    {
        targetDistance = Vector3.Distance(playerTarget.transform.position, transform.position);

        if (targetDistance > spawnDistance && !startSpawn)
        {
            SpawnSquadron();
        }

        if (startSpawn)
        {
            if (unspawnedEnemies > 0 && Time.time > nextSpawnTime)
            {
                nextSpawnTime = Time.time + squadron.spawnDelay;

                EnemyControllerNavTest spawnedEnemy = Instantiate(enemy, transform.position, Quaternion.identity) as EnemyControllerNavTest;
                enemies[squadron.enemyCount - unspawnedEnemies] = spawnedEnemy.gameObject;

                PatrolNavMesh enemyPatrol = spawnedEnemy.GetComponent <PatrolNavMesh>();
                enemyPatrol.spawner         = this;
                enemyPatrol.patrolBoundsMin = patrolBoundsMin;
                enemyPatrol.patrolBoundsMax = patrolBoundsMax;

                spawnedEnemy.OnDeath += OnEnemyDeath;

                unspawnedEnemies--;
            }
        }
    }
Beispiel #2
0
    protected override void Start()
    {
        base.Start();
        player        = GameObject.FindWithTag("Player").GetComponent <PlayerController>();
        playerRB      = player.GetComponent <Rigidbody>();
        movingEntity  = GetComponent <MovingEntity>();
        playerTarget  = GameObject.FindGameObjectWithTag("Player");
        pathfinder    = GetComponent <NavMeshAgent>();
        material      = gameObject.GetComponentInChildren <Renderer>().material;
        weaponSystems = GetComponent <WeaponSystems>();

        steeringBasics = GetComponent <SteeringBasics>();
        pursue         = GetComponent <Pursue>();
        evade          = GetComponent <Evade>();
        patrol         = GetComponent <PatrolNavMesh>();

        shader1 = Shader.Find("Diffuse");
        shader2 = Shader.Find("Transparent/Diffuse");

        shotTimer       = maxShotTime;
        secondShotTimer = maxSecondShotTime;

        enemyState = EnemyState.PATROL;
    }