Inheritance: MonoBehaviour
Ejemplo n.º 1
0
    void UpdateTarget()
    {
        GameObject[] enemies = GameObject.FindGameObjectsWithTag(enemyTag);

        float      shortestDistance = Mathf.Infinity;
        GameObject nearestEnemy     = null;

        foreach (GameObject enemy in enemies)
        {
            float distanceToEnemy = Vector3.Distance(transform.position, enemy.transform.position);
            if (distanceToEnemy < shortestDistance)
            {
                shortestDistance = distanceToEnemy;
                nearestEnemy     = enemy;
            }
        }

        if (nearestEnemy != null && shortestDistance <= range)
        {
            target      = nearestEnemy.transform;
            targetEnemy = nearestEnemy.GetComponent <EnemyStart>();
        }
        else
        {
            target = null;
        }
    }
Ejemplo n.º 2
0
    void Damage(Transform enemy)
    {
        EnemyStart e = enemy.GetComponent <EnemyStart>();

        if (e != null)
        {
            e.TakeDamage(damage);
        }
    }
Ejemplo n.º 3
0
        public void Reset(LevelType theLevelType, LevelConfigData theLevelConfigData)
        {
            levelType       = theLevelType;
            levelConfigData = theLevelConfigData;

            maxEnemySpawn = levelConfigData.EnemySpawn;
            if (maxEnemySpawn <= 0)
            {
                maxEnemySpawn = 1;
            }
            if (maxEnemySpawn > Constants.MAX_ENEMYS_SPAWN)
            {
                maxEnemySpawn = Constants.MAX_ENEMYS_SPAWN;
            }

            EnemyTotal = levelConfigData.EnemyTotal;
            if (EnemyTotal <= 0)
            {
                EnemyTotal = 1;
            }

            // Ensure max total takes precedence over spawn.
            if (maxEnemySpawn > EnemyTotal)
            {
                maxEnemySpawn = EnemyTotal;
            }

            // Reset all enemies but not the list as will clear.
            for (Byte index = 0; index < maxEnemySpawn; index++)
            {
                EnemyList[index].Reset();
            }

            // Important: collections MUST be cleared on Reset() to ensure stability!
            Clear();
            enemyDelays.Clear();
            enemyRotates.Clear();
            enemyMoves.Clear();

            EnemyStart      = 0;
            EnemySpawn      = 0;
            EnemyStartText  = EnemyStart.ToString().PadLeft(3, '0');
            EnemyTotalText  = EnemyTotal.ToString().PadLeft(3, '0');
            EnemyPercentage = 0.0f;
        }
Ejemplo n.º 4
0
    void Start()
    {
        enemy = GetComponent <EnemyStart>();

        target = Waypoints.points[0];
    }
Ejemplo n.º 5
0
        public void Update(GameTime gameTime)
        {
            EnemyController = 0.0f;
            Boolean launchCheck = false;

            EnemyTest.Clear();
            for (Byte index = 0; index < maxEnemySpawn; index++)
            {
                Enemy enemy = EnemyList[index];
                enemy.Update(gameTime);

                // Check if controller should rumble.
                if (enemy.EnemyMotor > 0)
                {
                    Single enemyMotor = enemy.EnemyMotor;
                    if (EnemyController < enemyMotor)
                    {
                        EnemyController = enemyMotor;
                    }
                }

                // Check if should move enemy ship...
                if (enemy.EnemyChange)
                {
                    if (MoveType.None != enemy.MoveType)
                    {
                        Boolean enemyMoving = MyGame.Manager.MoverManager.ShouldEnemyMove(enemy.FrameIndex, levelType);
                        enemy.SetEnemyMoving(enemyMoving);

                        if (enemyMoving)
                        {
                            Boolean updateVelocity = MyGame.Manager.MoverManager.UpdateVelocity(enemy.FrameIndex, enemy.MoveType, levelType);
                            if (updateVelocity)
                            {
                                Vector2 velocity = MyGame.Manager.MoverManager.GetEnemyVelocity(enemy.MoveType);
                                enemy.SetEnemyVelocity(velocity);
                            }
                        }
                        else
                        {
                            enemy.SetEnemyVelocity(Vector2.Zero);
                        }
                    }
                }

                if (enemy.EnemyLaunch)
                {
                    launchCheck = true;
                    EnemyStart++;
                    enemy.ResetLaunch();
                }
                if (EnemyType.Test == enemy.EnemyType)
                {
                    EnemyTest.Add(enemy);
                }
            }

            if (launchCheck)
            {
                EnemyStartText  = EnemyStart.ToString().PadLeft(3, '0');
                EnemyPercentage = (EnemyStart / (Single)EnemyTotal) * 100.0f;
            }
        }