Что мне нужно для создания этого элемента управления для этой игры?(Как трубопровод) - PullRequest
2 голосов
/ 21 августа 2011

Это мой первый пост в этом разделе (XNA и разработка игр).Я пытаюсь получить что-то на изображении ниже.Как видите, есть шоссе, а внутри него будут двигаться некоторые объекты (миллисекунды).Я думаю, что уличное поведение похоже на конвейер.Когда шоссе загружает объект, оно появляется в начале, и оно будет двигаться через верхнее программное обеспечение, пока не достигнет другой крайности шоссе.

Моя главная проблема заключается в том, как я могу сделать несколькообъекты только внутри шоссе?

enter image description here

Заранее спасибо.

1 Ответ

0 голосов
/ 23 августа 2011

Вам нужен список точек и список спрайтов

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;
         }
     }    
}
...