[RPG MAKER MZ] 실시간 게이지를 게임 화면에 항상 표시하는 방법
[RPG MAKER MZ] 실시간 게이지를 게임 화면에 항상 표시하는 방법
지난 글
지난 글에서는 아래에서부터 차오르는 게이지를 만드는 방법에 대해 함께 알아보았어요. 이번 글에서는 그 게이지를 화면에 항상 보이도록 띄워두는 방법을 소개해 드릴게요. 이제 플레이어가 언제든 진행 상황을 한눈에 파악할 수 있도록 게이지를 게임 화면에 고정해 볼까요?
1. 공통이벤트 만들기 : 게이지 이미지를 화면에 띄우기
가장 먼저 할 일은, 게이지 이미지를 게임 화면에 띄우는 공통 이벤트를 만드는 거예요. 이 공통 이벤트는 맵이 바뀌어도 항상 화면에 표시되도록 설정할 거예요.
아래와 같이 공통 이벤트를 작성해요.
지난 시간에 만들었던 게이지 이미지를 띄우는 코드를 먼저 넣어주세요.
그리고 그 아래에 스위치를 켜는 코드를 한 줄 더 추가 합니다.
여기서 n에 사용할 스위치 번호를 넣어주세요.
이 스위치를 켜는 이유는. 3번 단계에서 작성할 실시간으로 게이지를 갱신하는 공통 이벤트를 작통 시키기 위해서예요.
- true는 스위치를 ON
- false는 스위치를 OFF

2. 맵 이벤트 작성 : 공통 이벤트 자동 실행
이번에는 방금 작성한 공통 이벤트를 자동으로 실행해주는 맵 이벤트를 만들어줄게요.
맵 위에 아무 이미지도 없는 이벤트를 만들어 줍니다. 이 이벤트의 역할은 아주 간단해요. 공통 이벤트를 딱 한 번 실행하고, 자기 역할은 조용히 마무리하는 거예요.
먼저 공통 이벤트를 실행하는 코드를 입력합니다. 여기서 COMMON_EVENT_ID에 아까 만들었던 공통 이벤트 번호를 입력해주세요. (예: 5번이면 reserveCommentEvent(5) )
이제 이 맵 이벤트는 임무를 마쳤으니 더 이상 실행되지 않도록 꺼줄거예요. 아래의 코드를 써서 이 이벤트의 셀프 스위치 A를 켜주세요.
이 이벤트의 셀프 스위치 A를 켜주는 코드를 작성합니다.
- this._mapId : 이 이벤트가 속해 있는 맵의 ID
- this.eventId() : 이 이벤트 ID를 반환하는 함수
- A : 셀프 스위치 A
- true : 스위치 ON (false는 Off)

- 이벤트 페이지 새로 만들기 버튼을 눌러 새 이벤트 페이지를 만들어 줍니다.
- 출현 조건에서 셀프 스위치에 체크를 하고 A를 선택해 줍니다.
- 이 두 번째 페이지에는 아무 실행 내용도 넣지 않아야 해요.
그러면 셀프 스위치가 켜졌을 때 이 이벤트 페이지로 바뀌고 이벤트는 더 이상 작동하지 않게 됩니다.

3. 공통 이벤트 작성 : 게이지 바 작동 코드
이제는 화면에 고정된 게이지 바가 실시간으로 변하는 새로운 공통 이벤트를 만들어 볼 차례예요.
이렇게 하면 스위치가 켜졌을 때 이 이벤트가 백그라운드에서 계속 작동하게 돼요.
- 먼저 지난 시간에 만든 게이지 바가 비율에 따라 움직이게 하는 코드를 그대로 넣어 줍니다
- 그 다음 꼭 필요한 한 줄이 있어요.
마지막에 대기 코드를 넣어줘요. 대기를 넣지 않으면 프레임마다 계속 실행돼서 렉에 걸려요.
this.wait(n)에서 n은 프레임 수 입니다.
예시)
- this.wait(60) → 1초 기다리기
- this.wait(30) → 0.5초 기다리기

goal에 정수를 넣으면 작동하는데 변수를 넣으면 작동하지 않을때
let goal = $gameVariables.value(n1); 로 했을 때 작동하지 않는 이유는 변수 n1번이 아직 설정되지 않았거나 값이 0이기 때문이에요. rate = done / goal; 이 부분에서 goal이 0이거나 undefined이면, NaN 또는 Infinity가 발생하고, 그 뒤의 계산도 전부 무력화돼요. 그렇기 때문에 goal에 해당하는 변수를 먼저 지정하고나서 이 공통 이벤트의 병렬 처리를 하는 스위치를 켜줘야 제대로 작동해요.
전체 흐름 정리
- 1게이지 이미지를 띄우는 공통 이벤트 작성
- 2해당 공통 이벤트를 실행하는 맵 이벤트 만들기 (자동실행, 셀프스위치)
- 3실시간으로 게이지를 갱신하는 공통 이벤트 작성하기 (병렬 처리+대기)
1. 게이지 이미지를 띄우는 공통 이벤트 작성
2. 해당 공통 이벤트를 실행하는 맵 이벤트 만들기 (자동실행, 셀프스위치)
3. 실시간으로 게이지를 갱신하는 공통 이벤트 작성하기 (병렬 처리+대기)
이제 플레이어가 무언가를 할 때마다, 게이지 바가 실시간으로 부드럽게 움직이는 걸 확인할 수 있을 거예요.