我需要为这个游戏创建这个控件吗? (像管道一样)

时间:2011-08-21 05:19:47

标签: c# windows-phone-7 xna xna-4.0

这是我在本节的第一篇文章(XNA和游戏开发)。我想要得到下面的图像。正如你所看到的,有一条高速公路,在它内部,会有一些物体移动(毫秒)。我猜这种行为似乎就像一条管道。当高速公路装载一个物体时,它会出现在开始时,它将在高档物品中移动,直到它到达高速公路的另一个极端。

我的主要问题是,如何才能在高速公路内移动多个物体?

enter image description here

提前致谢。

1 个答案:

答案 0 :(得分:0)

您需要一个点列表和一个精灵列表

class Path 
{
   List<Vector2> Points;
   float[] Lengths;
   Vector2[] Directions;

   void Build()
   {
       Lengths = new float[Points.Count-1];
       Directions = new float[Points.Count-1];
       for (int i=0; i<Points.Count-1;i++)
       {
            Directions[i] = Points[i+1] - Points[i];
            Lengths[i] = Directions[i].Length();
            Directions[i].Normalize();
       }  
   }
}

class Sprite 
{
     Vector2 Position;
     float StagePos;
     int StageIndex;
     Path Path;
     float Speed;

     void Update(float Seconds)
     {
         if (StageIndex!=Path.Points.Count-1)
         {
             StagePos += Speed * Seconds;
             while (StagePos>Path.Lengths[StageIndex])
             {
                 StagePos -= Path.Lengths[StageIndex]; 
                 StageIndex++;              
                 if (StageIndex == Path.Points.Count-1) 
                 {
                     Position = Path.Points[StageIndex];
                     return;
                 }
             }
             Position = Path.Points[StageIndex] + Directions[StageIndex] * StagePos;
         }
     }    
}