这是我在本节的第一篇文章(XNA和游戏开发)。我想要得到下面的图像。正如你所看到的,有一条高速公路,在它内部,会有一些物体移动(毫秒)。我猜这种行为似乎就像一条管道。当高速公路装载一个物体时,它会出现在开始时,它将在高档物品中移动,直到它到达高速公路的另一个极端。
我的主要问题是,如何才能在高速公路内移动多个物体?
提前致谢。
答案 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;
}
}
}