public override MovementOutput GetMovement() { DesiredOutput = DesiredMovement.GetMovement(); DesiredVelocity = this.Character.velocity + DesiredOutput.linear; if (DesiredVelocity.magnitude > MaxSpeed) { DesiredVelocity.Normalize(); DesiredVelocity *= MaxSpeed; } samples.Add(DesiredVelocity); for (int i = 0; i < numSamples; i++) { angle = Random.Range(0, MathConstants.MATH_2PI); magnitude = Random.Range(0, MaxSpeed); velocitySample = MathHelper.ConvertOrientationToVector(angle) * magnitude; samples.Add(velocitySample); } base.Target.velocity = GetBestSample(samples, DesiredVelocity); return(base.GetMovement()); }