首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

XNA 基礎(03):動畫與幀率控制

     編輯:關於.NET

2D/3D 遊戲離不開動畫。XNA 中實現動畫核心在於 Update 改變狀態,Draw 繪製新幀。

基本移動動畫

在 Game1.Update() 修改 Sprite 位置座標,下一次 Draw() 即顯示新位置。

複雜動畫:精靈幀序列圖

如爆炸效果,製作一系列圖片代表各狀態,合成單一大圖(Sprite Sheets),每小圖尺寸一致。
爆炸序列圖

Update 中切換顯示索引,Draw 使用 sourceRectangle 繪製對應區域。

幀率控制

Frame Rate:每秒重繪次數。XNA 預設 60fps(人眼無閃爍最低刷新率)。可透過 TargetElapsedTime 調整:

base.TargetElapsedTime = new TimeSpan(0,0,0,0,10); // 10ms = 100fps

實際幀率受硬體限制,XNA 會自動略過 Draw。可用 GameTime.IsRunningSlowly 偵測。

個別動畫獨立幀率

修改 TargetElapsedTime 影響所有動畫。需讓單一動畫以固定速率運行(不超過主幀率與硬體上限):

int timeSinceLastFrame = 0;
int millisecondsPerFrame = 50; // 20fps
// 在 Update 中
timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds;
if (timeSinceLastFrame > millisecondsPerFrame) {
    timeSinceLastFrame -= millisecondsPerFrame;
    // 切換至下一幀
}

將此邏輯封裝於 Sprite 基類,即可讓不同 Sprite 以各自速率動畫。

下一節將講解滑鼠、鍵盤輸入事件捕捉。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved