0
這裏是我在彈丸類更新方法上的代碼。 每個fram previousXposition被添加到最後的結果,而不是替換最後的結果。 問題的原因和解決方法是什麼?xna更新方法 - 爲什麼=符號的行爲就像+ =
public void Update(GameTime gameTime)
{
if (Position.X != previousXPosition)
{
flightTime += (float)gameTime.ElapsedGameTime.TotalSeconds;
Position.X += previousXPosition;
Position.Y -= previousYPosition;
previousXPosition = (projectileVelocity.X * flightTime) + 0.5f * (wind * (float)Math.Pow(flightTime, 2));
previousYPosition = (projectileVelocity.X * flightTime) + 0.5f * (gravity * (float)Math.Pow(flightTime, 2));
}
感謝您的答案,但我想知道爲什麼等號(=)是在演戲就像+ =登錄:previousXPosition =其代表的增量。我應該每次都取消它嗎? – gooteis 2011-04-25 08:21:01
previousXPosition不是三角洲。這是因爲'飛行時間'不是德爾塔時間,而是累計時間。像這樣積累時間通常不是一個好方法。 – 2011-04-25 13:13:34
您計算的表達式不容易遵循。考慮簡化它們或將它們分離爲幾個子表達式,以幫助使它更易於閱讀和維護。 – 2011-04-26 15:48:27