제가 생존게임을 만들어보려 하는데 이게 가장 큰 난관이더군요..
일단 제가 생각 해낸 방법은
1. 맵에 블럭 이벤트를 여러개 만들고 그걸 밀어서 배치하는 방식과
2. 아이템을 쓰면 캐릭터 앞에 블럭이 생성되서 그걸 밀어서 배치하는 방식
이렇게 둘이 있는데 뭔가 좀 번거롭더군요.. 다른 좀더 간편하고 편리한 방법이 있을까요?
제가 생존게임을 만들어보려 하는데 이게 가장 큰 난관이더군요..
일단 제가 생각 해낸 방법은
1. 맵에 블럭 이벤트를 여러개 만들고 그걸 밀어서 배치하는 방식과
2. 아이템을 쓰면 캐릭터 앞에 블럭이 생성되서 그걸 밀어서 배치하는 방식
이렇게 둘이 있는데 뭔가 좀 번거롭더군요.. 다른 좀더 간편하고 편리한 방법이 있을까요?
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
게임 내에서 '무언가' 즉 이벤트를 아예 생성하는 건 이벤트 커맨드만으로는 일단 불가능한 걸로 알고 있구요
최대한 간단하게 하려면 님이 생각하신 2. 와 퀵슬롯 방식을 연계하는 것이 제일 편할 것 같네요.
Q에 '모래' 를 등록했다면 Q를 누르는 순간에 눈 앞에 모래블럭이 나온다던가.
(사실 1. 과 2. 의 메커니즘은 사실상 같습니다. 결국 해당 맵상에서 미리 생성된 이벤트를 갖다 써야 하기 때문에..)
덧붙이자면 1. 과 2. 는 결국 '맵 상 이벤트의 갯수' 라는 한계점이 있기 때문에 가령 마인크래프트 같은 '모든 맵에서 같은 방식으로 무한히 생성한다' 라는 건 거의 불가능하다고 봐야 할 것 같고 제가 3. 을 따로 제시해드리자면 :
1. 상시 적용되는 커먼이벤트에서 현재 플레이어의 X, Y좌표와 현재 플레이어가 있는 맵을 대표할 수 있는 데이터(맵 ID라던가) 하나를 변수로 따온다. (변수 조작)
2. 병렬처리로 적용되는 맵 상의 이벤트('블럭생성 이벤트')를 현재 플레이어가 보고 있는 방향을 따져 플레이어의 X, Y좌표 변수를 조작해 [이벤트 위치설정] 커맨드로 플레이어 한 칸 앞에 위치하게 한다.
3. 블럭생성 이벤트에서 그 이벤트의 화면 좌표를 임의의 변수 2개(블럭생성 X, 블럭생성 Y 같은 이름으로)에 따온다. 이 시점에서 블럭생성 이벤트는 항상 플레이어 한칸 앞에 위치하며, 화면 X,Y좌표가 항상 갱신되고 있다.
4. 블럭을 만들 역할을 할 스킬 또는 아이템을 만들고 임의의 커먼이벤트와 연동한다.
5. 커먼이벤트에서 블럭생성 이벤트의 화면 X,Y 좌표가 들어있는 변수를 임의의 변수 2개 (블럭 1 X, 블럭 1 Y 같은 이름으로)에 복사한다.(변수 조작) 이 때 첫 번째 블럭이 있다면 두 번째에, 두 번째가 있다면 세 번째에 저장하는 식으로 이벤트 코드를 짠다.
(변수는 값을 지정하지 않으면 0이니 [조건 분기 - 변수 [블럭 1 X] 가 0 이외] 식으로 짜서 0이라면 블럭 1에 저장하고 0이 아니라면 블럭 2에 저장하는데 블럭 2의 값이 0이라면 블럭 2에 저장하고 아니라면 블럭 3에 저장하는데.. 식으로 원하는 블럭 최대수만큼 이어가면 됩니다)
6. 상시 적용되는 커먼이벤트(1. 의 커먼이벤트와 다른)에 플레이어가 특정 맵에 있다면(조건 분기와 상술한 '맵을 대표하는 데이터' 이용) 5. 에서 지정한 변수에 블럭 그림을 띄운다.
모든 맵에 블럭생성 이벤트를 하나씩 깔아두고 (블럭의 숫자) * 2 만큼의 변수가 있다면 거의 무한에 가까운 숫자의 블럭을 배치할 수 있게 됩니다.
(그림표시 최대 제한에 걸리겠지만 전 그게 어디까지인지 모르기 때문에 패스..)
이벤트를 만드는 건 아니지만 맵상의 특정 좌표에 블럭 그림을 띄워서 이벤트가 있는 것처럼 만드는 방법이죠.
물론 쌩 노가다지만 가장 이상적인 방법이 아닐까 싶네요. 이렇게 만들어진 블럭을 이동시키려면 플레이어의 화면 좌표와 비교해서 블럭의 화면 좌표와 같아지면 플레이어가 보고 있는 방향으로 블럭의 좌표를 재조정하면 됩니다.