public override void Update(GameTime gameTime) { float timeDelta = (float)gameTime.ElapsedGameTime.TotalSeconds; float range = 30.0f; timeShot += timeDelta; float fov = MathHelper.PiOver4; // Can I see the leader? Fighter leader = XNAGame.Instance.Leader; if ((leader.Position - Entity.Position).Length() > range) { // Is the leader inside my FOV AIFighter fighter = (AIFighter)Entity; fighter.SwicthState(new IdleState(fighter)); } else { float angle; Vector3 toEnemy = (leader.Position - Entity.Position); toEnemy.Normalize(); angle = (float)Math.Acos(Vector3.Dot(toEnemy, Entity.Look)); if (angle < fov) { if (timeShot > 0.25f) { Lazer lazer = new Lazer(); lazer.Position = Entity.Position; lazer.Look = Entity.Look; XNAGame.Instance.Children.Add(lazer); timeShot = 0.0f; } } } }
public override void Update(GameTime gameTime) { float timeDelta = (float)gameTime.ElapsedGameTime.TotalSeconds; float range = 30.0f; timeShot += timeDelta; float fov = MathHelper.PiOver4; // Can I see the leader? Fighter leader = XNAGame.Instance.Leader; if ((leader.Position - Entity.Position).Length() > range) { // Is the leader inside my FOV AIFighter fighter = (AIFighter)Entity; fighter.SwicthState(new IdleState(fighter)); } else { float angle; Vector3 toEnemy = (leader.Position - Entity.Position); toEnemy.Normalize(); angle = (float) Math.Acos(Vector3.Dot(toEnemy, Entity.Look)); if (angle < fov) { if (timeShot > 0.25f) { Lazer lazer = new Lazer(); lazer.Position = Entity.Position; lazer.Look = Entity.Look; XNAGame.Instance.Children.Add(lazer); timeShot = 0.0f; } } } }