2016-02-18 57 views
2

目前我正在試圖創建一個Love2d空間遊戲運行繪製函數只有一次,我試圖用點點運氣的星星創建隨機生成,我創建了星功能是:你如何Love2d

function space.drawStars() 

    for i = 1, space.starNum do 
     love.graphics.setColor(255, 255, 255) 
     space.starSize = love.math.random(1, 10) 
     space.starXPosition = love.math.random(1, 1200) 
     space.starYPosition = love.math.random(1, 750) 
     love.graphics.rectangle("fill", space.starXPosition,space.starYPosition, space.starSize, space.starSize) 
    end 

end 

我現在遇到的問題是,當它運行時,Lua似乎多次運行該函數,並且恆星不斷在變化。我已經嘗試將這個函數的內容放在我的主類的load()函數中,但是因爲這需要在我的繪圖函數中,所以它不會生成星星。

請有人可以幫助我如何讓這個功能只運行一次,所以Lua只繪製一組恆星,並不會不斷創造新的恆星並摧毀原來的恆星。

謝謝,

回答

2

創建啓動一次。像這樣(未經):

local stars = nil 

local function createStars() 
    if stars==nil then 
     stars={} 
     for i = 1, space.starNum do 
      stars[i] = { 
       Size = love.math.random(1, 10), 
       XPosition = love.math.random(1, 1200), 
       YPosition = love.math.random(1, 750), 
      } 
     end 
    end 
end 

function space.drawStars() 
    createStars() 
    for _, star in ipairs(stars) do 
     love.graphics.setColor(255, 255, 255) 
     love.graphics.rectangle("fill", star.XPosition, star.YPosition, star.Size, star.Size) 
    end 
end 
+0

謝謝回答,我已經impletemented你的代碼,但是當它運行線路:love.graphics.rectangle( 「補」,明星[I] .XPosition,明星[我] .YPosition,star [i] .Size,star [i] .Size)的錯誤是「試圖索引一個零值」我如何糾正這一點我不知道,因爲我不知道它在哪裏索引零值 – ReltonTolpo

+1

@ReltonTolpo:我修復了代碼中的一個錯誤。現在就試試。 –

+0

@NicolBolas @NicolBolas我編輯了我的代碼,但是我仍然收到錯誤,這次錯誤是:「試圖索引本地'星號'(一個數字值)」這個錯誤與前一行相同 – ReltonTolpo