Ошибка нулевого значения LUA после события касания

Так что этот вопрос связан с вопросом, который я отправил вчера ССЫЛКА!, В настоящее время я работаю над игрой в лифт и пытаюсь переместить пассажира в зависимости от значения y лифта (лифта).

function moveLift(event)
    for i=1,PASSENGER_AMOUNT do
        for j=1,4 do
            if passengers[i].travelling == true then
                if event.phase == "began" then
                    markY = event.target.y
                    passengers[i].y = event.target.y
                elseif event.phase == "moved" then
                    local y = (event.y - event.yStart) + markY
                    event.target.y = y
                    passengers[i].y = event.target.y
                elseif event.phase == "ended" then

                    if (hasCollided( event.target, hotSpots[j] )) then

                        if (event.target.destination == hotSpots[j].floor) then
                            if event.target.occupied == true then

                                display.remove(floorText)
                                floorText = nil

                                gameAreaGroup.remove(passengers[i])
                                passengers[i] = nil

                                succesfullPassengers = succesfullPassengers + 1

                                if succesfullPassengers == PASSENGER_AMOUNT then
                                    gameIsOver = true
                                    createDialogue("Congratulations! You have completed the level!")
                                    for i=1,LIFT_AMOUNT,1 do
                                        lifts[i]:removeEventListener( "touch", moveLift )
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end
end

Когда пассажир входит в лифт, я устанавливаю логическое значение, называемое travel, на true, чтобы я знал, что пассажира можно переместить. Но когда я поднимаю лифт на правильный этаж (случайное значение от 1 до 4), я получаю ошибку (попытка индексировать поле '?' (нулевое значение)) в строке 96:

if passengers[i].travelling == true then

Так что я предполагаю, что пассажира не удаляют проперли, верно?

0 ответов

Другие вопросы по тегам