예제 #1
0
        public override void Update(float dt)
        {
            foreach (Entity entity in _livesEntities)
            {
                LivesComponent livesComp = entity.GetComponent <LivesComponent>();
                FontComponent  fontComp  = entity.GetComponent <FontComponent>();

                fontComp.Content = livesComp.Lives.ToString();
            }
        }
예제 #2
0
    GameObject SeekNewTarget()
    {
        if (tag == "EnemyProjectile") // an enemy missile targets the player
        {
            GameObject playerObject = GameObject.FindGameObjectWithTag("Player");
            _targetScript = playerObject.GetComponent <LivesComponent>();
            return(playerObject);
        }

        // player missles target enemies
        GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");

        // remove enemies that are already targeted by missiles
        HashSet <GameObject> notTargetEnemies = new HashSet <GameObject>(enemies);

        notTargetEnemies.ExceptWith(_enemiesTargetedByMissiles);

        // allow re-targeting the same enemies if all enemies have been targeted
        IEnumerable enemiesToSearch = notTargetEnemies.Count != 0 ? (IEnumerable)notTargetEnemies: enemies;

        if (enemies.Length == 0)
        {
            return(null);
        }

        float      closestDistance = 9999f;
        GameObject closestEnemy    = null;

        foreach (GameObject enemy in enemiesToSearch)
        {
            Enemy enemyScript = enemy.GetComponent <Enemy>();
            if (enemyScript == null)
            {
                continue;                      // ignore non-scripted hitboxes
            }
            if (enemyScript.enemyLives.IsDead)
            {
                continue;                                //ignore dead enemies!
            }
            // if this new enemy is closer, pick it instead
            float distance = Vector3.Distance(enemy.transform.position, transform.position);
            if (closestEnemy == null || distance < closestDistance)
            {
                closestDistance = distance;
                closestEnemy    = enemy;
            }
        }

        if (closestEnemy)
        {
            _targetScript = closestEnemy.GetComponent <LivesComponent>();
            _enemiesTargetedByMissiles.Add(closestEnemy);
        }
        return(closestEnemy);
    }
예제 #3
0
        void DecreaseLifeCount(Player player)
        {
            foreach (Entity livesEntity in _livesEntities)
            {
                LivesComponent livesComp = livesEntity.GetComponent <LivesComponent>();

                if (livesComp.For == player)
                {
                    livesComp.Lives--;
                    break;
                }
            }
        }