Пример #1
0
        // Add a little variation into the steering.
        private Vector2 Wander()
        {
            // Update wanderTheta.
            wanderTheta += SlagMath.GenerateGaussianNoise(WANDER_VARIANCE, GameResources.ActorManager.Random);
            while (wanderTheta > MathHelper.Pi)
            {
                wanderTheta -= MathHelper.TwoPi;
            }

            while (wanderTheta < -MathHelper.Pi)
            {
                wanderTheta += MathHelper.TwoPi;
            }

            Vector2 newHeading = Vector2.UnitY * WANDER_DISTANCE +
                                 new Vector2((float)(-Math.Sin(wanderTheta)), (float)(Math.Cos(wanderTheta))) * WANDER_RADIUS;

            if (newHeading.X == 0.0f && newHeading.Y == 0.0f)
            {
                return(Vector2.Zero);
            }

            newHeading.Normalize();
            return(newHeading);
        }
Пример #2
0
 public ZombieWanderState(float avgDurationSeconds)
 {
     mDurationTicks = (long)(TimeSpan.TicksPerSecond * (Math.Max(avgDurationSeconds + SlagMath.GenerateGaussianNoise(avgDurationSeconds * avgDurationSeconds * 0.25f,
                                                                                                                     GameResources.ActorManager.Random), 0.25f)));
 }