xna中的旋转问题

时间:2012-11-15 18:59:29

标签: c# xna-4.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;
        }
    }
}

提前致谢并询问我是否对某些事情不清楚。

1 个答案:

答案 0 :(得分:0)

如果飞艇离开边缘时会发生“停止转弯”操作,则无法将其置于飞艇的位置(在所有玩家可能想要靠近之后)。

所以你需要在每个飞艇turningFromTheEdge中包含一些额外的状态,如果设置了这个并且飞艇不再靠近边缘,那么就停止转弯。