MSW메이플월드

메이플월드 - 미니게임 랜덤 배치

현구구 2022. 11. 17. 00:25

맵 이동의 순서도는 다음과 같다.

먼저 MatchLogic이다 이는 게임 전체에 적용되는 코드이다.

MatchLogic은 기본 라이브러리에서 가져왔고

이 함수를 펼친뒤

이 부분에 인자로 이동하고 싶은 첫 번째 인스턴스맵의 이름을 넣으면 된다.

이렇게 되면 게임 시작 후 플레이 버튼을 눌렀을 때 waitingMap으로 이동하게 될 것이다.

 

waitingMapRandom

이 컴포넌트는 waitingMap에 들어가며 다음에 있을 미니게임들에 랜덤성을 부여한다.

count : 앞으로 있을 미니게임맵의 인덱스

check : 랜덤에서 나온 숫자를 확인하기 위한 변수 이미 나온 숫자면 true 안나온 숫자면 false

mapname : 맵 이름이 담겨있는 배열

 

먼저 게임이 시작되면 모든 check를 false로 해주고 각 mapname배열에 미니게임 맵 이름을 넣어준다.

 

그리고 OnUpdate에서 플레이어의 playerNextMapCheck 컴포넌트에서 다음 맵의 이름에 현재 랜덤으로 나온 맵의 이름을 넣어준다.

DefaultPlayer에 있는 playerNextMapCheck컴포넌트에서는 다음과 같이 다음에 갈 맵 배열을 선언해주고

제대로 랜덤성이 부여됐는지 확인하기 위해 print로 출력해본다.

이 때 마지막 맵인 4번째 맵은 FinishMap으로 고정한다.

 

WaitingMapGameComponent

해당 컴포넌트는 waitingMap에 들어있다.

5초간격으로 만약 플레이어의 상태가 true이면 다음 인스턴스맵으로 이동시키고 false라면 이동시키지 않는다.

이동시키고 나면 다시 플레이어의 상태를 false로 되돌린다.

플레이어의 상태는 PlayerCanGoNextMap이라는 컴포넌트에서 따로 변수 선언을 해주었다.

 

마지막으로 임시로 다음맵으로 넘어가는 것을 확인하기 위해 닿으면 플레이어의 상태가 true가 되는 npc를 하나 추가해주고 해당 컴포넌트를 추가한다.

 

제대로 맵 간의 랜덤성이 부여되었다.