0

我正在 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;
        }
    }
}

在此先感谢并询问我是否对某些事情不清楚。

4

1 回答 1

0

鉴于“停止转动”操作将在飞艇远离边缘时发生,您不能将其基于飞艇的位置(毕竟玩家可能想要靠近)。

因此,您需要在每个 blimp 中包含一些额外的状态turningFromTheEdge,如果已设置并且 blimp 不再靠近边缘,则停止转动。

于 2012-11-15T19:03:01.023 回答