2014-07-22 51 views
1

德爾塔時間不會工作,無論我嘗試。我得到這個錯誤如何獲得德爾塔時間愛上工作

player.lua 39:試圖對全球 'DT' 執行算術(一個零值)

函數 '更新'

在功能

'player_move'

函數[C]:我做了所有氈 'xpcall'


對,它顯然認爲我在談論一個不存在的變量。我應該做dt = 1

如果我這樣做,它仍然看起來像它在不同的步伐中偶爾移動,沒有教程或文檔我見過告訴你這樣做。

回答

0

請確保您將love.update函數定義爲love.update(dt)(請參閱love wiki上的示例);如果從love.update打電話給你player_move功能,那麼你就需要一個參數添加到dtplayer_move值傳遞給它:

local function player_move(dt) 
    -- do something with dt 
end 

function love.update(dt) 
    player_move(dt) 
end 
0

Main.lua:40試圖瓶坯對全球「shoottimer」算術(一個零值)

在代碼它看起來像這樣:

ShootCoolDown = 0.2 
Shoottimer = ShootCoolDown 

--some code 
Function love.update(dt) 
Shoottimer = Shoottimer - (1 * dt) 

我不知道發生了什麼事錯了!

1

您不必初始化dt變量,它已經爲您完成了。如果您試圖在love.update函數中獲得Delta Time,您可以立即使用dt變量,並且不會遇到任何問題,但此變量不是全局變量,因此如果您嘗試在另一個地方訪問此變量(說你love.draw功能或player.lua)您有其他三個選項:

使用內置的love.timer.getDelta功能(推薦)

此功能可能得到增量時間的最佳方式。下面是一個例子用法:

whatever*love.timer.getDelta() 

很簡單吧!

進行全局增量時間變量

這是不是真的做到這一點的最好辦法,但它是一個選項。這裏是一個辦法做到這一點和一些用法示例:

love.update

function love.update(dt) 
    DeltaTime = dt 
end 

一些實例應用:

whatever = whatever*DeltaTime 

傳遞本地DT變量函數

這不是一個壞的方法來做到這一點,真正的問題是它這是因爲你從love.update調用你的函數,所以你的函數不斷地被調用(你可能不想這樣做。 )

love.update

function love.update(dt) 
    player_move(dt) 
end 

某些實例應用:

function player_move(dt) 
    whatever = whatever*dt 
end 
+0

'DT = DeltaTime'是向後在設置全局例子。 「DeltaTime = dt」是正確的,因爲您正在將'dt'分配給'DeltaTime' – ATaco