Esempio n. 1
0
        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;
             }
         }
     }
 }