private void GetAndSetEnemiesInArea() { NearbyColliders = Physics2D.OverlapCircleAll(transform.position, checkRadius, Utilities.bulletIgnoreLayerMask); bool foundOneMilitaryEnemy = false; bool foundOneEnemy = false; bool foundOneAsteroid = false; if (!gameObject.tag.Equals("Untagged")) { foreach (Collider2D collider in NearbyColliders) { if (!collider.tag.Equals("Asteroid")) { if (RelationshipManager.AreFactionsInWar(gameObject.tag, collider.tag)) { foundOneEnemy = true; if (collider.gameObject.layer == 9) { foundOneMilitaryEnemy = true; break; } } } else { foundOneAsteroid = true; } } } EnemyNearby = foundOneEnemy; EnemyMilitaryNearby = foundOneMilitaryEnemy; AsteroidNearby = foundOneAsteroid; }
private void Update() { if (Input.touchCount == 1) { if (Input.GetTouch(0).position.x > Camera.main.pixelWidth * 0.3f) { if (Input.GetTouch(0).phase == TouchPhase.Began) { Vector2 tappedPoint = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); Collider2D selectedCollider = Physics2D.OverlapPoint(tappedPoint); if (selectedCollider != null) { SelectionManager.HandleClickOnCollider(selectedCollider); } else { SelectionManager.HandleRightClick(Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position), FactionsManager.playerFaction.factionTag); } } } } if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) { Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition; transform.Translate(-touchDeltaPosition.x * movementSpeed * Time.deltaTime, -touchDeltaPosition.y * movementSpeed * Time.deltaTime, 0); } if (Input.touchCount >= 3) { if (RelationshipManager.AreFactionsInWar("Faction1", "Faction2")) { RelationshipManager.EndWar("Faction1", "Faction2"); RelationshipManager.EndWar("Faction2", "Faction1"); RelationshipManager.EndWar("Faction1", "Faction3"); RelationshipManager.EndWar("Faction3", "Faction1"); RelationshipManager.EndWar("Faction3", "Faction2"); RelationshipManager.EndWar("Faction2", "Faction3"); } else { RelationshipManager.StartWar("Faction1", "Faction2"); RelationshipManager.StartWar("Faction2", "Faction1"); RelationshipManager.StartWar("Faction1", "Faction3"); RelationshipManager.StartWar("Faction3", "Faction1"); RelationshipManager.StartWar("Faction3", "Faction2"); RelationshipManager.StartWar("Faction2", "Faction3"); } } }
private Collider2D getClosestEnemy() { Collider2D currentClosest = null; float currentClosestEnemy = float.MaxValue; foreach (Collider2D collider in aiAttributes.AttachedSensors.NearbyColliders) { if (collider != null) { if (RelationshipManager.AreFactionsInWar(gameObject.tag, collider.tag) && collider.gameObject.layer == 9) { float currentColliderDistance = Vector2.Distance(gameObject.transform.position, collider.transform.position); if (currentClosest == null || currentClosestEnemy > currentColliderDistance) { currentClosest = collider; currentClosestEnemy = currentColliderDistance; } } } } return(currentClosest); }
private string giveDominantFactionTag() { string returnValue = null; if (tag.Equals("Untagged")) { IDictionary <string, int> factionMilitaryShipsPresent = new Dictionary <string, int>(); foreach (string key in FactionsManager.factions.Keys) { factionMilitaryShipsPresent[key] = 0; } foreach (Collider2D collider in attachedSensors.NearbyColliders) { if (collider != null) { if (collider.gameObject.layer == 9) { factionMilitaryShipsPresent[collider.tag]++; } } } int mostMilitaryShips = 0; foreach (string key in factionMilitaryShipsPresent.Keys) { if (factionMilitaryShipsPresent[key] > mostMilitaryShips) { returnValue = key; mostMilitaryShips = factionMilitaryShipsPresent[key]; } } } else { foreach (Collider2D collider in attachedSensors.NearbyColliders) { if (collider != null) { if (collider.gameObject.layer == 9) { if (tag.Equals(collider.tag)) { returnValue = null; break; } else if (RelationshipManager.AreFactionsInWar(tag, collider.tag)) { if (returnValue == null || returnValue.Equals(collider.tag)) { returnValue = collider.tag; } else { returnValue = null; break; } } } } } } return(returnValue); }
private void Update() { if (Time.time >= targetUpdateTimer) { targetUpdateTimer += targetUpdateTime; float closestEnemy = float.MaxValue; bool foundOneEnemy = false; if (aiAttributes.AttachedSensors.EnemyNearby) { foreach (Collider2D collider in aiAttributes.AttachedSensors.NearbyColliders) { if (collider != null) { if (RelationshipManager.AreFactionsInWar(collider.tag, gameObject.tag)) { float distanceToCollider = Vector2.Distance(transform.position, collider.transform.position); if (Target == null || closestEnemy > distanceToCollider) { Target = collider; closestEnemy = distanceToCollider; foundOneEnemy = true; } } } } } if (!foundOneEnemy) { Target = null; } } // If we have a target rotate the turret to face target, and shoot if (Target != null) { float angleToTarget = Utilities.angleToTarget(gameObject, Target.transform.position); if (Mathf.Abs(angleToTarget) < 3) { attachedTurret.FireTurret(); } else { rotateTurret(angleToTarget); } // If we do not have a target, face the turret forwards } else { if (aiAttributes.AttachedShip != null) { float angleForwards = Utilities.angleToTarget(gameObject, aiAttributes.AttachedShip.transform.position + aiAttributes.AttachedShip.transform.up); if (Mathf.Abs(angleForwards) > 1) { rotateTurret(angleForwards); } } } }