0
好吧,你說你玩的是自上而下的遊戲。您按W
和D
進入正確的方向。現在你只是想正確的,所以你釋放W
鍵。人們會希望你然後改變方向並向右轉,但相反,你繼續向右。我能做些什麼來解決這個問題? 這裏是我的代碼:XNA Diagonal Movement Key Release
if (kb.IsKeyDown(Keys.W) || kb.IsKeyDown(Keys.A) || kb.IsKeyDown(Keys.S) || kb.IsKeyDown(Keys.D))
{
if (kb.IsKeyDown(Keys.W))
velocity.Y = -movespeed;
else if (kb.IsKeyDown(Keys.A))
velocity.X = -movespeed;
else if (kb.IsKeyDown(Keys.S))
velocity.Y = movespeed;
else if (kb.IsKeyDown(Keys.D))
velocity.X = movespeed;
else if (kb.IsKeyDown(Keys.W) && kb.IsKeyDown(Keys.D))
{
velocity.X = movespeed;
velocity.Y = -movespeed;
}
else if (kb.IsKeyDown(Keys.W) && kb.IsKeyDown(Keys.A))
{
velocity.X = -movespeed;
velocity.Y = -movespeed;
}
else if (kb.IsKeyDown(Keys.S) && kb.IsKeyDown(Keys.D))
{
velocity.X = movespeed;
velocity.Y = movespeed;
}
else if (kb.IsKeyDown(Keys.S) && kb.IsKeyDown(Keys.A))
{
velocity.X = -movespeed;
velocity.Y = movespeed;
}
}
else
velocity *= .9f;
position += velocity;
您是否認爲對角線速度比向上/向下/向左/向右移動要快?一種解決方案是使速度正常化,然後乘以速度。另一種是如果運動是對角的,則用'sqrt(2)'分割速度。 –
不,我沒有。你能詳細說明一下嗎? – omni
對角線速度將是'速度幅度* sqrt(2)'。 – snahor