2014-10-09 82 views
0

我正在嘗試使用XNA庫進行遊戲。我想讓一個精靈們投擲一個火球來擊落小行星。但我在按下具體的關鍵時遇到了問題:例如,我想在投擲之間擲出一秒火球。XNA遊戲:計算兩次拍攝之間的時間

我想測量創建實例之間的時間差。我怎樣才能做到這一點?

回答

2

UYou可以使用gameTime變量傳遞給Update方法這樣的ElapsedGameTime屬性:

const float shootTimer = 1.0f; 
float elapsedTime = 0f; 

protected override void Update(GameTime gameTime) 
{ 
    // Allows the game to exit 
    if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) 
     this.Exit(); 

    elapsedTime += gameTime.ElapsedGameTime.TotalSeconds; 

    if(elapsedTime >= shootTimer && /* Your logic to see if you should shoot a fireball */) 
    { 
     // Shoot the fireball! 
     elapsedTime = 0f; 
    } 

    base.Update(gameTime); 
} 

基本上,要在上面的代碼做的是設置一個最小值(秒)需要在每次射門之間傳遞。 然後,您創建一個變量來存儲每次拍攝之間所經過的時間量。

Update方法中,您可以在每個Update調用之間添加時間,然後檢查它是否大於定時器,如果是,則您拍攝並重置已用時間。

注意:我寫了一段代碼,因爲它可能有一些小問題。

+0

感謝您的回答!有用! :) – Gerixxx 2014-10-28 02:34:00

0

您主Game類別的任何Update或任何GameComponent的每次呼叫都會收到GameTime的實例作爲參數。它的財產ElapsedGameTime可以用來積累時間的流逝。