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(); } }
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); }
void DecreaseLifeCount(Player player) { foreach (Entity livesEntity in _livesEntities) { LivesComponent livesComp = livesEntity.GetComponent <LivesComponent>(); if (livesComp.For == player) { livesComp.Lives--; break; } } }