0
我有一個爆炸雪碧,有16幀。XNA雪碧幀不一致
每次玩家碰撞一個小行星,調用lose()函數。
在lost()函數中,此代碼繪製了動畫spritesheet,它貫穿16幀動畫。它應該始終從第0幀開始,但並不總是如此。
expFrameID = 0;
expFrameID += (int)(time * expFPS) % expFrameCount;
Rectangle expRect = new Rectangle(expFrameID * expFrameWidth, 0, 63, 63);
spriteBatch.Draw(explosion, shipLocation, expRect, Color.White, 0f, new Vector2(32, 32), 1.0f, pickupSpriteEffects, 0.1f);
if (expFrameID == 15)
expIsDrawn = true;
時間變量如下,它獲得總的遊戲時間。
time = (float)gameTime.TotalGameTime.TotalSeconds;
這是從我相信失去()函數下面一行是問題:
expFrameID += (int)(time * expFPS) % expFrameCount;
它的工作原理,以及它動畫。然而它並不總是從第0幀開始,它從0到16之間的隨機幀開始,但它仍以每秒16幀正確運行。
那麼,如何讓它始終從第0幀開始?
改爲使用'ElapsedGameTime'。在自己的變量中自己累積時間(或幀數)。 –
如何累積時間/幀數? – Sasstraliss
在你的班級中有一個變量,例如「浮動時間」。在你的更新方法中,執行'time + =(float)gameTime.ElapsedGameTime.TotalSeconds'。或者你可以增加一個計數器,無論你在哪裏。 –