Пример #1
0
        private void MoveTowardNextAITunnelEntryPoint(GameTime gameTime)
        {
            float HorizontalDistance = Math.Sign(ActiveVehicule.GetHorizontalDistanceToEntryPointOfAITunnel(ActiveVehicule.NextAITunnel));

            ActiveVehicule.PrepareBoost(gameTime);
            ActiveVehicule.Turn(gameTime, HorizontalDistance);
        }
Пример #2
0
        public override void DoUpdate(GameTime gameTime)
        {
            if (ActiveVehicule.CollideWith(ActiveVehicule.NextAITunnel))
            {
                EnterNextTunnel();
            }

            if (IsOutOfBound())
            {
                if (ActiveVehicule.IsBehindTunnel())
                {
                    ActiveVehicule.Accelerate(gameTime);
                    MoveTowardNextAITunnelEntryPoint(gameTime);
                }
                else if (ActiveVehicule.IsInFrontOfTunnel())
                {
                    EnterNextTunnel();
                }
                else
                {
                    float HorizontalDistance = Math.Sign(ActiveVehicule.GetHorizontalDistanceToAITunnel(ActiveVehicule.CurrentAITunnel));
                    if (HorizontalDistance == 0)
                    {
                        ActiveVehicule.Accelerate(gameTime);
                    }
                    else
                    {
                        ActiveVehicule.PrepareBoost(gameTime);
                        ActiveVehicule.Turn(gameTime, HorizontalDistance);
                    }
                }
            }
            else
            {
                if (ActiveVehicule.IsWrongWay())
                {
                    float HorizontalDistance = Math.Sign(ActiveVehicule.GetHorizontalDistanceToEntryPointOfAITunnel(ActiveVehicule.NextAITunnel));
                    ActiveVehicule.PrepareBoost(gameTime);
                    if (HorizontalDistance != 0)
                    {
                        ActiveVehicule.Turn(gameTime, HorizontalDistance);
                    }
                    else
                    {
                        ActiveVehicule.Turn(gameTime, 1f);
                    }
                }
                else
                {
                    FollowCurrentAITunnel(gameTime);
                }
            }
        }
Пример #3
0
        private bool CanEnterNextAITunnel()
        {
            float HorizontalDistance = ActiveVehicule.GetHorizontalDistanceToEntryPointOfAITunnel(ActiveVehicule.NextAITunnel);

            return(HorizontalDistance == 0);
        }