В моем курсе есть некоторая работа по обновлению их Legend of Zelda с помощью Love2D, что означает, что я должен использовать Lua для реализации горшков в игре. Он отлично работал со всем кодом, который я установил, но у меня возникла ошибка, когда я нажал клавишу ввода, чтобы перенести горшок:
Error
src/states/entity/player/PlayerIdlePotState.lua:15: attempt to index local 'params' (a nil value)
Traceback
src/states/entity/player/PlayerIdlePotState.lua:15: in function 'enter'
src/StateMachine.lua:19: in function 'change'
src/Entity.lua:73: in function 'changeState'
src/world/Room.lua:297: in function 'update'
src/world/Dungeon.lua:123: in function 'update'
src/states/game/PlayState.lua:50: in function 'update'
src/StateMachine.lua:23: in function 'update'
main.lua:51: in function 'update'
[C]: in function 'xpcall'
Я проверил свой код, и он выглядел хорошо в процессе, затем я проверил Room.lua
, и я вижу это:
if love.keyboard.wasPressed('enter') or love.keyboard.wasPressed('return') then
if object.type == 'pot' then
if self.player.HitBoxPot:collides(object) then
self.player:changeState('idle-pot', {pot = object})
table.remove(self.objects, k)
end
end
end
В моей функции обновления я выдаю параметры PlayerIdlePotState.lua
в его функции ввода:
function PlayerIdlePotState:enter(params)
-- render offset for spaced character sprite
self.entity.offsetY = 5
self.entity.offsetX = 0
self.pot = params.pot
self.entity:changeAnimation('idle-pot-' .. self.entity.direction)
end
Не уверен, что произошло, чтобы вызвать нулевое значение. Знаете почему?
Если вам интересно, как выглядит код, я опубликую его на GitHub, если вам нужно.
Изменить: Мой код на GitHub находится здесь: код Legend of Zelda . Если вы не видите код или что-то еще, скорее всего, это частный случай. Дай мне знать.