Beispiel #1
0
 /// <summary>
 /// Makes a zig zag path
 /// </summary>
 /// <param name="startPos"></param>
 /// <param name="endPos"></param>
 /// <param name="zigZag"></param>
 /// <param name="steps"></param>
 /// <param name="speed"></param>
 public void makePathZigZag(Vector2 startPos, Vector2 endPos, Vector2 zigZag, int steps, float speed)
 {
     lst = new List<WayPoint>();
     float zig = 1;
     for (int i = 0; i < steps; i++)
     {
         Vector2 v=new Vector2(0,0);
         float lerp = (float)i / ((float)steps-1);
         v.X = MathHelper.Lerp(startPos.X, endPos.X, lerp);
         v.Y = MathHelper.Lerp(startPos.Y, endPos.Y, lerp);
         v = v + (zig * zigZag);
         WayPoint w = new WayPoint(v, speed);
         add(w);
         zig = zig * (-1);
     }
     wayFinished = 1; // typically you want this
 }
Beispiel #2
0
 /// <summary>
 /// Make a parabolic path changing velocity by delta to -/+ limits in 
 /// </summary>
 /// <param name="startPos"></param>
 /// <param name="initVelocity"></param>
 /// <param name="delta"></param>
 /// <param name="speedLimit"></param>
 /// <param name="limits"></param>
 public void makePathDelta(float speed, int maxSteps, Vector2 startPos, Vector2 initVelocity, Vector2 delta, Rectangle limits)
 {
     lst = new List<WayPoint>();
     Vector2 p = new Vector2(startPos.X, startPos.Y);
     Vector2 v = new Vector2(initVelocity.X, initVelocity.Y);
     WayPoint w = new WayPoint(p, speed);
     add(w);
     for (int i = 0; i < maxSteps - 1; i++)
     {
         //Vector2 v = new Vector2(p.X+v.X,p.Y+v.X);
         p=p+v;
         v = v + delta;
         w = new WayPoint(p, speed);
         add(w);
         if (!limits.Contains((int)p.X, (int)p.Y))
         {
             break;
         }
     }
     wayFinished = 2; // typically you want this
 }
Beispiel #3
0
 /// <summary>
 /// returns the index for subsequent use as leg
 /// </summary>
 /// <param name="w"></param>
 /// <returns></returns>
 public int add(WayPoint w)
 {
     lst.Add(w);
     return lst.Count() - 1;
 }
Beispiel #4
0
        /// <summary>
        /// Construct a circular path of waypoints 
        /// </summary>
        /// <param name="center"></param>
        /// <param name="radius"></param>
        /// <param name="startAngle"></param>
        /// <param name="angleIncrement"></param>
        /// <param name="steps"></param>
        /// <param name="speed"></param>
        /// <param name="Xscale">usually 1 for a circle, vary from 1 to creat ovals</param>
        public void makePathCircle(Vector2 center, float radius, float startAngle, float angleIncrement, int steps, float speed, float Xscale)
        {
            lst = new List<WayPoint>();

            for (int i = 0; i < steps; i++)
            {
                Vector2 v = Util.moveByAngleDist(new Vector2(0, 0), startAngle + (i * angleIncrement), radius);
                v.X = v.X * Xscale;
                v = v + center;
                WayPoint w = new WayPoint(v, speed);
                add(w);
            }
        }
Beispiel #5
0
 /// <summary>
 /// Construct a 3 position walpoint list
 /// </summary>
 /// <param name="w1"></param>
 /// <param name="w2"></param>
 /// <param name="w3"></param>
 /// <param name="wayFinishedZ"></param>
 public WayPointList(WayPoint w1, WayPoint w2, WayPoint w3, int wayFinishedZ)
 {
     wayFinished = wayFinishedZ;
     reset();
     add(w1);
     add(w2);
     add(w3);
 }