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

「回転停止」操作は、飛行船が端から離れているときに行われるため、飛行船の位置に基づいて行うことはできません(すべてのプレーヤーが近づきたいと思うかもしれません)。

したがって、各飛行船にいくつかの追加の状態を含める必要があります。turningFromTheEdgeこれが設定されていて、飛行船がエッジの近くにない場合は、回転を停止します。

于 2012-11-15T19:03:01.023 に答える