Ошибка нулевого значения 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
Так что я предполагаю, что пассажира не удаляют проперли, верно?