이 예제는 Managing Players의 2탄이며, 플레이어를 경기장 SpawnLocation에 배치시키는 예제이다. 같은 SpawnLocation에 배치되면 안되기 때문에 for문과 pair() 함수를 이용하여 플레이어들이 같은 장소에서 spawn되지 않도록 하였다. 자세한 내용은 아래를 살펴보자
Sending Players to the Arena (플레이어를 경기장으로 보내기)
이전 편에서 플레이어들을 로비로 Spawn 해줬으니, 이제 매치 장소로 텔레포트를 시켜보자.
PlayerManager 스크립트에 preparePlayer함수를 추가한다. 이때 함수의 파라미터는 player와 whichSpawn(플레이어를 보낼 장소)이다.
플레이어의 RespawnLocation 속성을 whichSpawn으로 설정해준다.
LoadCharacter함수를 통해 캐릭터를 reload시킨다. 그러면 플레이어는 재할당된 Spawn 장소로 respawn 될 것이다.
LoadCharacter()의 한계
LoadCharacter()는 플레이어를위한 새로운 캐릭터 또는 아바타를 만든다. 이렇게하면 플레이어의 현재 배낭과 내부의 도구가 모두 삭제된다. 이것은 플레이어가 도구를 몰래 들어가는 것을 막는데 유용하다. 플레이어가 갖기를 원하는 모든 아이템은 reload 후 배낭에 다시 넣어야한다. -> LoadCharacter() 실행 시 캐릭터나 아바타가 새로 생성되기 때문에 자원 낭비가 매우 심할 것 같다. 더 효율적인 방법이 있는지 알아보고 없다면 LoadCharacter() 후 이전의 캐릭터를 제거해줘야될 것 같다.
Code a For Loop with Pairs() (Pairs()함수를 이용한 for문 작성하기)
플레이어들을 경기장의 각각 다른 Spawn장소로 이동시켜야 되는데, 이때 for문과 pairs() 함수를 사용한다. pairs()는 array의 모든 값들을 순회하는 함수이다. 자세한 사용법은 아래를 참고하자.
pairs함수를 사용하면 array에 있는 값들을 쉽게 순회할 수 있다. 잘 이해가 안되면 은찬이가 작성한 for문 ㄱㄱ
위처럼 코드를 추가해준다.
GetChildren함수는 해당 객체(여기선spawnLocations)의 모든 자식객체를 테이블 형태로 가져온다.
아래에 for 루프를 추가하고 반복자(pairs)를 통해 모든 플레이어들에 대한 객체를 얻는다.
GetPlayers()함수는 모든 플레이어객체를 테이블 형태로 가져온다.
Track and Spawn Players (플레이어를 추적하고 경기장으로 spawn 시키기)
for 루프를 사용하여 각 플레이어의 이름을 activePlayers array에 추가하여 현재 경기장에있는 사람을 추적한다. 이 array는 현재 경기중인 플레이어에게만 적용하려는 코드에 사용된다.
table.insert() 함수를 이용하여, activePlayers array에 현재 활성화되어 있는 플레이어들의 객체를 담아준다.
table.insert(테이블, 집어넣을 값) - 테이블에 값을 집어넣어주는 함수
arenaSpawns array에 담겨있는 첫번째 값을 spawnLocation 변수에 담아준다.
그 후, preparePlayer함수에 플레이어와(whichiPlayer), Spawn 장소(spawnLocation) 인자를 넣어서 호출한다.
그 후, arenaSpawns array의 첫번째 값을 제거한다.
이렇게 되면 모든 플레이어들이 각각 다른 spawn 장소로 지정된다.
플레이어가 경기장으로 전송되는지 로컬 서버에서 테스트한다. 플레이어를 로비로 다시 보내는 코드가 아직 작성되지 않았기 때문에 플레이어는 같은 위치에서 계속 respawn된다.
위의 코드대로만 하면 에러가 발생한다... preparePlayer 함수에 player:LoadCharacter()를 꼭 추가해주도록 하자 그리고 테스트를 위한 SpawnLocation도 생성해주어야 에러가 안난다. 아래 이미지와 같이 생성해주도록 하자 (폴더구조 똑같아야 함)
참고 링크
education.roblox.com/en-us/resources/battle-royale/managing-players
플레이어 관리
이 플랫폼은 사용자 경험을 개선하고, 콘텐츠를 맞춤 설정하고, 소셜 미디어 기능을 제공하고, 트래픽을 분석하기 위해 쿠키를 사용합니다. 이 플랫폼의 쿠키 사용을 중지 또는 관리하는 방법
education.roblox.com
'Education_Tutorial Series > Coding Project: Battle Royale' 카테고리의 다른 글
Coding Project: Battle Royale - [4] Timers and Custom Events (타이머와 커스텀 이벤트) (0) | 2021.04.19 |
---|---|
Coding Project: Battle Royale - [3-3] Managing Players (플레이어 관리) (0) | 2021.04.19 |
Coding Project: Battle Royale - [3-1] Managing Players (플레이어 관리) (0) | 2021.04.19 |
Coding Project: Battle Royale - [2] Coding the Game Loop (0) | 2021.04.18 |
Coding Project: Battle Royale - [1] Project and Map Setup (0) | 2021.04.18 |
댓글