Ich schreibe mein erstes Lua-Skript mit love2d und ich bin mir nicht sicher, warum ich den Fehler "main.lua: 4 versuche, globalen 'Player' einen Tabellenwert aufzurufen". Meine 2-Skripte sind unter: --Main.luaVersuch, Spieler einen Tabellenwert anzurufen
require("player")
function love.load()
p = Player()
end
function love.update(dt)
p:update(dt)
end
function love.draw()
p:draw()
end
--Player.lua
Player = {}
--variables for the player (size, position, speed)
function Player:new()
o = {
x = 30,
y = 30,
w = 20,
h = 20,
speed = 300,
}
setmetatable(player, { __index = Player })
end
function Player:update(dt)
if love.keyboard.isDown("a") then
player.x = player.x - player.speed * dt
end
if love.keyboard.isDown("d") then
player.x = player.x + player.speed * dt
end
if love.keyboard.isDown("w") then
player.y = player.y + player.speed * dt
end
if love.keyboard.isDown("s") then
player.y = player.y - player.speed * dt
end
end
function Player:draw()
love.graphics.rectangle("fill", o.x, o.y, o.w, os.h)
end
Hallo, danke für die Antwort, dein Vorschlag hat den ersten Fehler behoben, aber ein anderer Fehler trat in Zeile 8 in der Funktion love.update auf. "Versuch, globalen 'p' einen Nullwert zu indexieren –
Ich zeigte eine Lösung, aber diese Korrektur hat auch einen Fehler :) Die letzte Zeile sollte' return setmetatable (player, ... blah-blah) 'lauten. Sie haben erstellt ein Objekt, setze sein Metatable, aber es gab es nicht vom Konstruktor zurück. Antwort bearbeitet. – Vlad