我最近開始使用XNA進行開發。我可以說我有更多的基本編程語言,但沒有特別的東西。簡單的2D運動
作爲我與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框架的更新方法,得到讓我的精靈招:
// 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價值,但它採用的是恆定速度( 20)而不是將它增加到50.
我想我不夠聰明想想爲什麼會發生這種情況,所以一些更好的開發人員的幫助將非常感激。
請注意,我不想看其他地方,我想讓我的版本按預期工作,所以直接的答案是最好的。
您能向我們展示您用於左箭頭鍵的代碼嗎? – Beta