0

Jumping Platformer Example のカメラ クラスを作成しようとしています。リンクはこちら

カメラをプレーヤーの「ボール」に追従させる方法がわかりません。タイルが常に画面上に表示されることはわかっていますが、マップを X、Y に拡張し、カメラを使用してプレイヤーが世界をナビゲートするのを追跡したいと考えています。

誰かがチュートリアルをチェックして、カメラ クラスを追加する方法を説明してくれたら、とても感謝しています。(XNA の新機能)

4

1 に答える 1

1

単純。もっと簡単にできるかもしれませんが、一般的な考え方は次のとおりです。

これは、「X」座標の簡単な方法です。後で Y 座標にも複製できますが、もっと簡単に行うことができます。しかし、これはプロセス全体を示すためのものです。Math.Max(Math.Min()) を使用してこれらの値を短い形式で計算することもできますが、これは機能します。

ここでソースコード全体を見ることができます: http://pastebin.com/G969mz0f

テクスチャ ファイル「プレーヤー」が必要です。「Program.cs」はすべて 1 つのファイルにまとめているため、削除する必要があります。

public void Move(float x, float y, Camera2D Camera)
{

    Position.X += x;

    if ((Position.X < Camera.Min.X))
       Position.X = Camera.Min.X;

    if ((Position.X + Width) > Camera.Max.X)
       Position.X = Camera.Max.X - Width;

    float centerX = Position.X + (Width / 2);

    if (centerX > (Camera.Min.X + (ScreenDimension.X / 2)))
    {
        if (centerX < (Camera.Max.X - (ScreenDimension.X / 2)))
        {
            Camera.Move(-x, 0);
        }
        else
        {
            Camera.SetPosition(-(Camera.Max.X - ScreenDimension.X), Camera.Position.Y);
        }
    }
    else
    {
        Camera.SetPosition(Camera.Min.X, Camera.Position.Y);
    }

    // Removed Y because of code length

}
于 2013-04-05T12:01:46.710 に答える