Esempio n. 1
0
        /// <summary>
        /// Determine transform of enemy nearest to player ship.
        /// </summary>
        /// <returns> Transform of nearest enemy ship. </returns>
        private Transform GetNearestEnemy()
        {
            Vector3    positionDifference;
            float      distance;
            float      shortestDistance = Mathf.Infinity;
            GameObject nearestEnemy     = null;

            foreach (GameObject enemy in GameObject.FindGameObjectsWithTag("Enemy"))
            {
                NewBoss newBoss     = enemy.GetComponent <NewBoss>();
                Enemy   enemyScript = enemy.GetComponent <Enemy>();
                if (enemyScript != null)
                {
                    if (newBoss == null)
                    {
                        if (!enemyScript.PathingComplete || !enemyScript.IsActive)
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (newBoss.CurrentState != BossStates.Combat)
                        {
                            continue;
                        }
                    }
                }
                else
                {
                    continue;
                }

                positionDifference = enemy.transform.position -
                                     transform.parent.transform.position;

                //faster than non-squared magnitude
                distance = positionDifference.sqrMagnitude;
                if (distance < shortestDistance && enemy.activeSelf)
                {
                    shortestDistance = distance;
                    nearestEnemy     = enemy;
                }
            }

            //couldn't find any enemies
            if (shortestDistance == Mathf.Infinity)
            {
                return(null);
            }

            return(nearestEnemy.transform);
        }
Esempio n. 2
0
        /// <summary>
        /// Initializes
        /// </summary>
        /// <param name="referenceManager"> The reference manager </param>
        public void Initialize(ReferenceManager referenceManager)
        {
            if (!IsInitialized)
            {
                reference = referenceManager;

                if (bossPrefab != null)
                {
                    IsInitialized = true;
                    ObjectPoolManager opm = reference.objectPoolManager;

                    bossObject = opm.Spawn(gameObject, opm.GetTypeIdentifier(bossPrefab),
                                           bossSpawn.position, bossSpawn.rotation, transform);

                    bossScript = bossObject.GetComponent <NewBoss>();
                    TransitionState(BossStates.Intro);
                }
                else
                {
                    Debug.LogError(GetType().Name + " - bossPrefab is not set.");
                }
            }
        }