public GameObjectVertical FindAimObject() { if (ShootObject == null) { var targetsWithinRange = GetTargetsWithinRange(SightRange); if (targetsWithinRange.Count > 0) { shootObject = targetsWithinRange[0]; foreach (GameObjectVertical obj in targetsWithinRange) { if (MathFunctions.ObjectDistance(this, obj) < MathFunctions.ObjectDistance(this, shootObject)) { shootObject = obj; } } } } else { if (!CollisionDetection.IsPointInsideCircle(ShootObject.Position, Position, SightRange)) { ShootObject = null; } } return(ShootObject); }
public float FindClosestAimDistance() { GameObjectVertical aimObject = FindAimObject(); float distance; if (aimObject != null) { distance = MathFunctions.ObjectDistance(this, aimObject); } else { distance = 4000; } return(distance); }
public static GameObjectVertical ReturnClosestObject(GameObjectVertical object1, float range, List <GameObjectVertical> objects) { GameObjectVertical tempTarget = null; float tempDistance = range; foreach (GameObjectVertical obj in objects) { if (MathFunctions.ObjectDistance(object1, obj) < tempDistance && MathFunctions.ObjectDistance(object1, obj) < range) { tempTarget = obj; tempDistance = MathFunctions.ObjectDistance(object1, tempTarget); } } return(tempTarget); }
protected override void SecondaryShootingPattern(GameTime gameTime) { int activationTimeMilliseconds = 500; EnemyMine mine = new EnemyMine(Game, spriteSheet, player); mine.Initialize(); mine.SetActivationTime(activationTimeMilliseconds); mine.Position = Position; mine.Direction = MathFunctions.ScaleDirection(ShootObject.Position - Position); mine.Speed = 0.15f; float distance = MathFunctions.ObjectDistance(this, ShootObject); // Shoots at a location close to the players current mine.Duration = distance / mine.Speed * 0.9f; Game.stateManager.shooterState.gameObjects.Add(mine); }
public static GameObjectVertical ReturnClosestObject(GameObjectVertical object1, float range, List <GameObjectVertical> objects, List <string> kinds) { GameObjectVertical tempTarget = null; float tempDistance = range; foreach (GameObjectVertical obj in objects) { for (int i = 0; i < kinds.Count; i++) { if (obj.ObjectClass.ToLower() == kinds[i].ToLower() && MathFunctions.ObjectDistance(object1, obj) < tempDistance && MathFunctions.ObjectDistance(object1, obj) < range) { tempTarget = obj; tempDistance = MathFunctions.ObjectDistance(object1, tempTarget); } } } return(tempTarget); }
private void LocateHomingTarget() { GameObjectVertical tempTarget = null; float tempDistance = SightRange; if (Game.stateManager.shooterState.gameObjects != null) { foreach (GameObjectVertical obj in Game.stateManager.shooterState.gameObjects) { if (obj.ObjectClass == "enemy" && !(obj is Meteorite) && MathFunctions.ObjectDistance(this, obj) < tempDistance && MathFunctions.ObjectDistance(this, obj) < SightRange) { tempTarget = obj; tempDistance = MathFunctions.ObjectDistance(this, tempTarget); } } } if (tempTarget != null) { FollowObject = tempTarget; } }