これは非常に疑似的なコードですが、これはそれを行うための基本的なアプローチです
まず、プレーヤーに関するすべての情報を含むクラスを作成します。ヘルス、スコアなども追加できます。
class Player
{
Texture2D Sprite;
Vector2 Position;
Vector2 Velocity;
static const float PlayerSpeed = 5;
}
ここで重要なのは、Position (スプライトの左上)、Velocity (1 秒ごとの変化量)、および使用したいテクスチャである Sprite です。もちろん、プレーヤー テクスチャを 1 つだけ使用し、それに応じてソース rect を変更する方がよいでしょう。
次に、入力処理です。
void OnKeyboard(GameTime aGameTime, KeyArg aKey)
{
if(aKey == Keys.Left)
{
mPlayer.Velocity = new Vector2(-Player.PlayerSpeed, 0);
mPlayer.Sprite = TextureManager.GetTexture("left_player");
}
else if(aKey == Keys.Right)
{
mPlayer.Velocity = new Vector2(Player.PlayerSpeed, 0);
mPlayer.Sprite = TextureManager.GetTexture("right_player");
}
mPlayer.Position += aGameTime.EllapsedMiliseconds * mPlayer.Velocity;
}
ここでは、どのキーが押されたかを確認し、速度を変更して、プレーヤーの現在のスプライトを変更するだけです。最後の行は最も重要なものです。これは、フレームの経過時間によって変更された速度を使用してプレーヤーの位置を変更します。そうすれば、フレームレートの不一致にもかかわらず、代わりに安定した動きが得られます.
void Render()
{
Sprite.Draw(mPlayer.Sprite, mPlayer.Position);
}
最後にレンダリング、スプライトのレンダリング方法を明確にする必要があります。ここでは、設定したスプライトと位置を使用するだけです。テクスチャ スイッチの最小化、アルファ付きスプライトの処理、キーボードの最も重要な適切な処理など、改善の余地はたくさんあります。位置を着実に調整する必要がありますが、実装方法によっては、移動がキーのリピート レートにバインドされ、望ましくない場合があります。