2015-02-11 79 views
0

我正在嘗試在Lua中執行OOP,但它不會讓我在checkInput {}方法中更改vel_y值。任何想法如何我可以得到這個工作?順便說一下,我使用Love2D來處理這些輸入內容。Lua OOP找不到變量

Player = {x = 100, y = 20, vel_x = 0, vel_y = 0} 
function Player:new(o, x, y, vel_x, vel_y) 
    o = o or {} -- create object if user does not provide one 
    setmetatable(o, self) 
    self.__index = self 
    length = 0 
    return o 
end 

function Player:getX() 
    return self.x 
end 

function Player:getY() 
    return self.y 
end 

function Player:update(dt) 
    --update velocity 
    self.x = self.x + self.vel_x 
    self.y = self.y + self.vel_y 
    checkInput() 

end 

function checkInput(dt) 

    if love.keyboard.isDown("w") and length < 5 then --press the right arrow key to push the ball to the right 
     length = length + 1 
     self.vel_y = 5 
     print("bruhddddddddddddddddddddddd") 
    elseif love.keyboard.isDown("a") then 

    elseif love.keyboard.isDown("s") then 

    elseif love.keyboard.isDown("d") then 

    end 
end 
+0

我假設「不讓我改變checkInput {}方法中的vel_y值」,你的意思是你在這個點上得到一個關於'self'的錯誤是'nil'?這不是你的'Player'的方法,它沒有任何隱含的'self'參數,並且你沒有將該對象傳遞給函數,你期望它運行在什麼地方? – 2015-02-11 03:47:48

+0

@EtanReisner當我按'w'vel_y在upfate()中沒有變化() – Joe 2015-02-11 04:09:11

回答

0

我假設你的系統調用player:update()冷杉?如果是這樣,你應該通過selfdtcheckInput

function Player:update(dt) 
    --update velocity 
    self.x = self.x + self.vel_x 
    self.y = self.y + self.vel_y 
    checkInput(self, dt) --<-- 
end 
... 

function checkInput(self, dt) 
... 

,如果你(Player:update之前當然)定義checkInputlocal這可能是類似於私有方法。

Player = {x = 100, y = 20, vel_x = 0, vel_y = 0} do 
Player.__index = self -- we can do this only once 

function Player:new(o, x, y, vel_x, vel_y) 
    o = setmetatable(o or {}, self) -- create object if user does not provide one 
    -- init o here 
    return o 
end 

function Player:getX() end 

function Player:getY() end 

-- Private method 
local function checkInput(self, dt) end 

function Player:update(dt) 
    ... 
    checkInput(self, dt) -- call private method 
end 

end -- end clsss defenitioin 
+0

謝謝,早上對我來說完美的時機。我需要在lua上得到一本教科書。 – Joe 2015-02-11 11:59:51