Почему значение стало равным нулю при назначении в params? - PullRequest
1 голос
/ 07 августа 2020

В моем курсе есть некоторая работа по обновлению их 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 . Если вы не видите код или что-то еще, скорее всего, это частный случай. Дай мне знать.

...