버니맵 텔레포트를 루아로 구현해보자
원리는 플레이어 좌표가 특정수치 이하로 떨어지면(발판에서 아래로 떨어지면) 
정해진 스폰구역으로 텔레포트 되는 방식이다
이렇게 해두면 귀찮게 텔포넣고 커넥터로 연결하는 짓 안해도됨
대신 구간마다 트리거랑 함수 추가해야하는 귀찮음이 있지만 뭐 텔포 직접 넣는건보단 덜 귀찮더라
보는거처럼 아래쪽엔 아무것도 없다
각 단계에 있는 트리거에 닿으면 그 플레이어의 다음 스폰위치가 바뀌는 방식
↓ sauce
game.lua
-- 단계별 스폰될 위치
  savePoints={
 {x=-5,y=4,z=3},
 {x=-4,y=16,z=3},
 {x=11,y=19,z=3}
}
--플레이별로 레벨 저장할 변수
 
 playerLevels={}
 for i=1,24 do
 playerLevels[i]=nil
 end
--단계별로 다음 스폰위치 바꿀 트리거 설정
level1=Game.EntityBlock:Create ({x=-5,y=4,z=3})
level2=Game.EntityBlock:Create ({x=-4,y=16,z=3})
level3=Game.EntityBlock:Create ({x=8,y=19,z=3})
function level1:OnTouch( player )
 setPoint(player.index,1)
end
function level2:OnTouch( player )
 setPoint(player.index,2)
end
function level3:OnTouch( player )
 setPoint(player.index,3) 
end
--실질적으로 텔레포트 실행할 무한루프 함수
function Game.Rule:OnPlayerSignal (player, signal)
 teleport(player)
end
--플레이어가 나가면 그 플레이어 레벨 정보 삭제
function Game.Rule:OnPlayerDisconnect(player)
 playerLevels[player.index]=nil
end
--텔포함수
function teleport( player  )                -- 플레이어 z 좌표가 1이하로 떨어지면,
 local level=playerLevels[player.index]  --플레이어 단계확인후 그 단계에 맞는 위치로 텔포시킴
 if player.position.z < 1 then
 player.position={x=savePoints[level].x,y=savePoints[level].y,z=savePoints[level].z}
 end
end
function setPoint( index,level )           --플레이어 단계를 수정하는 함수
 playerLevels[index]=level               --위 트리거에 닿으면 이함수가 실행되면 그 플레이어 단계가 바뀜
end
===========================================
ui.lua
function UI.Event:OnUpdate (time)
 UI.Signal(1)
end
===========================================
사람 여러명인 방에서도 각자 단계별로 따로 텔포 되는거 확인함
스튜디오에 예제맵 가져가기 공개 해놓음
버그 있으면 제보좀