我正在XNA制作飞行模拟器游戏。我还有几个在地图上移动的飞艇(飞艇)。问题是,当它们到达地图的末尾时,我无法让飞艇正常转向。我有一个包含位置,旋转变量和速度的Blimp类。这是基本逻辑,它表示当它们接近边缘时它们将开始旋转,但我不知道如何在转动特定量(例如180度)后使它们停止旋转。
private void blimpLogic(GameTime gameTime)
{
float turningSpeed = (float)gameTime.ElapsedGameTime.TotalMilliseconds / 1000.0f;
float turning = 0;
foreach (Blimp b in blimps)
{
if (b.Pos.X <= terrain.EdgeX.X + 100)
{
turning += turningSpeed * b.Speed;
b.Rotation += turningSpeed;
}
if (b.Pos.X >= terrain.EdgeX.Y - 100)
{
turning += turningSpeed * b.Speed;
b.Rotation += turningSpeed;
}
if (b.Pos.Z <= terrain.EdgeZ.X + 100)
{
turning += turningSpeed * b.Speed;
b.Rotation += turningSpeed;
}
if (b.Pos.Z >= terrain.EdgeZ.Y - 100)
{
turning += turningSpeed * b.Speed;
b.Rotation += turningSpeed;
}
}
}
提前致谢并询问我是否对某些事情不清楚。
答案 0 :(得分:0)
如果飞艇离开边缘时会发生“停止转弯”操作,则无法将其置于飞艇的位置(在所有玩家可能想要靠近之后)。
所以你需要在每个飞艇turningFromTheEdge
中包含一些额外的状态,如果设置了这个并且飞艇不再靠近边缘,那么就停止转弯。