私は最近XNAで開発を始めました。私はもっと基本的なプログラミング言語を持っていると言えますが、それほど特別なことは何もありません。
XNAでの私の最初のプロジェクトとして。シンプルな2Dプラットフォーマーを作りたいのですが、今はシンプルな動きを試しています。
3つのベクトル(位置、速度、加速度)と単純な整数(最大速度)があります。
Vector2 pos = new Vector2(200, 200);
Vector2 vel = new Vector2(20, 20);
Vector2 acc = new Vector2(30, 30);
int maxVel = 50;
次に、XNAフレームワークのUpdateメソッドを取得して、スプライトを移動させる簡単なコードがあります。
// Horizontal Movement
if (KeybState.IsKeyDown(Keys.Right))
{
if (vel.X < maxVel)
vel.X += acc.X * curTime;
pos.X += vel.X * curTime;
}
if (!KeybState.IsKeyDown(Keys.Right) && vel.X > 20)
{
pos.X += vel.X * curTime;
vel.X -= 1;
}
したがって、右矢印キーを押すと、スプライトが動き始めます。速度は20から始まり、加速とゲームの経過時間の助けを借りて、maxVel(50)に増加し、右キーを離すと速度が失われます。それは完璧に動作します。
しかし、左矢印キーに対して同じことをしようとすると、pos +=の代わりにpos-=を実行します。これにより、pos.X値が減少しますが、50まで増加する代わりに一定の速度(20)が使用されます。 。
なぜこれが起こっているのかを考えるほど頭が良くないと思うので、より良い開発者からの助けをいただければ幸いです。
他の場所を見たくないことに注意してください。自分のバージョンを意図したとおりに機能させたいので、正解が最適です。