[스크립트 006] 맵 씬 스크립트 - 해부편 (2)
저번 글에 이어서 작성한다.
Create Message Window
함수 목적 : 메세지 윈도우를 만든다.
함수 내용
def create_message_window
@message_window = Window_Message.new
end
설명
@message_window를 메세지 윈도우로 선언한다.
Create Scrolling Text Window
함수 목적 : 스크롤 텍스트 윈도우를 만든다.
함수 내용
def create_scroll_text_window
@scroll_text_window = Window_ScrollText.new
end
설명
@scroll_text_window를 스크롤 텍스트 윈도우로 선언한다.
Create Map Name Window
함수 목적 : 맵 이름 윈도우를 만든다.
함수 내용
def create_location_window
@map_name_window = Window_MapName.new
end
설명
@map_name_window를 맵이름 윈도우로 선언한다.
Update Player Transfer
함수 목적 : 장소 이동 시 메소드를 호출한다.
함수 내용
def update_transfer_player
perform_transfer if $game_player.transfer?
end
설명
만약 플레이어 캐릭터의 장소 이동 실행 시, perform_transfer 메소드를 호출한다.
Update Encounter
함수 목적 : 인카운터 시 배틀 씬으로 씬을 이동한다.
함수 내용
def update_encounter
SceneManager.call(Scene_Battle) if $game_player.encounter
end
설명
만약 플레이어 캐릭터가 인카운터했을 경우, 배틀 씬을 불러온다.
Determine if Menu is Called due to Cancel Button
함수 목적 : B키(메뉴키)를 눌렀을 때 메뉴 호출을 관리하는 메소드이다.
함수 내용
def update_call_menu
if $game_system.menu_disabled || $game_map.interpreter.running?
@menu_calling = false
else
@menu_calling ||= Input.trigger?(:B)
call_menu if @menu_calling && !$game_player.moving?
end
end
설명
(1) if $game_system.menu_disabled || $game_map.interpreter.running?
@menu_calling = false
(2) else
@menu_calling ||= Input.trigger?(:B)
call_menu if @menu_calling && !$game_player.moving?
앞에서 말한 조건이 아닐 시, B키(메뉴키)가 인식되면 @menu_calling을 true로 한다.
이후 @menu_calling이 true 상태이고, 플레이어 캐릭터가 이동 중이 아니라면 call_menu 메소드를 호출한다.
Call Menu Screen
함수 목적 : 메뉴 씬을 불러온다.
함수 내용
def call_menu
Sound.play_ok
SceneManager.call(Scene_Menu)
Window_MenuCommand::init_command_position
end
설명
(1) Sound.play_ok
확인 SE(효과음)를 재생한다.
(2) SceneManager.call(Scene_Menu)
Determine if Debug Call by F9 key
함수 목적 : F9키를 눌렀을 경우, 디버그를 실행한다.
함수 내용
def update_call_debug
SceneManager.call(Scene_Debug) if $TEST && Input.press?(:F9)
end
설명
테스트 게임이고 F9키가 입력되었다면, 디버그 씬을 호출한다.
디버그 씬에는 스위치의 ON/OFF와 변수의 값을 변경할 수 있는 기능이 들어 있다.
단, 게임 편집 툴에서 테스트게임을 실행해야만 디버그 씬을 불러올 수 있다.
Player Transfer Processing
함수 목적 : 플레이어 캐릭터의 장소 이동 과정을 관리하는 메소드이다.
함수 내용
def perform_transfer
pre_transfer
$game_player.perform_transfer
post_transfer
end
설명
(1) pre_transfer
pre_transfer 메소드를 실행한다.
Preprocessing for Transferring Player
함수 목적 : 장소 이동을 하기 전에 미리 수행해야 할 부분을 관리하는 메소드이다. 장소 이동의 페이드 아웃 기능을 관리한다.
함수 내용
def pre_transfer
@map_name_window.close
case $game_temp.fade_type
when 0
fadeout(fadeout_speed)
when 1
white_fadeout(fadeout_speed)
end
end
설명
(1) @map_name_window.close
맵 이름 윈도우를 닫는다.
(2) case $game_temp.fade_type
when 0
fadeout(fadeout_speed)
화면 페이드 타입에 따라 두 가지로 나뉘는데, 0일 경우 검은색으로 fadeout_speed동안 페이드아웃한다.
(3) when 1
white_fadeout(fadeout_speed)
1일 경우 하얀색으로 fadeout_speed동안 페이드아웃한다.
Post Processing for Transferring Player
함수 목적 : 장소 이동을 수행하고 난 뒤의 처리를 관리하는 메소드이다.
함수 내용
def post_transfer
case $game_temp.fade_type
when 0
Graphics.wait(fadein_speed / 2)
fadein(fadein_speed)
when 1
Graphics.wait(fadein_speed / 2)
white_fadein(fadein_speed)
end
@map_name_window.open
end
설명
pre_transfer 메소드와 마찬가지로 페이드 타입에 따라 두 가지로 나뉜다. fadein_speed의 반만큼 잠시 기다린다는 점은 동일하다.
(1) when 0
Graphics.wait(fadein_speed / 2)
fadein(fadein_speed)
0일 경우, 잠시 기다렸다가 fadein_speed동안 페이드 인한다.
(2) when 1
Graphics.wait(fadein_speed / 2)
white_fadein(fadein_speed)
1일 경우, 잠시 기다렸다가 fadein_speed동안 하얀색으로 페이드 인한다.
(3) @map_name_window.open
장소이동을 완료했으니, 맵 이름 윈도우를 연다.
Preprocessing for Battle Screen Transition
함수 목적 : 배틀 씬으로 전환하기 전에 처리해야 할 것들을 관리하는 메소드이다.
함수 내용
def pre_battle_scene
Graphics.update
Graphics.freeze
@spriteset.dispose_characters
BattleManager.save_bgm_and_bgs
BattleManager.play_battle_bgm
Sound.play_battle_start
end
설명
그래픽을 업데이트하고, 잠시 화면을 멈췄다가 캐릭터 스프라이트셋을 없앤다.
배틀매니저에 맵에서 듣고 있었던 bgm과 bgs를 저장해놓고, 배틀 bgm을 실행한다.
그 뒤, 배틀 시작 효과음을 재생한다.
Preprocessing for Title Screen Transition
함수 목적 : 타이틀 씬으로 화면을 전환하기 전에 처리해야 할 것들을 관리하는 메소드이다.
함수 내용
def pre_title_scene
fadeout(fadeout_speed_to_title)
end
설명
타이틀 페이드아웃에 걸리는 시간 동안 페이드아웃한다.
Execute Pre-Battle Transition
함수 목적 : 배틀 씬으로 전환할 때 그래픽 애니메이션을 수행하는 메소드이다.
함수 내용
def perform_battle_transition
Graphics.transition(60, "Graphics/System/BattleStart", 100)
Graphics.freeze
end
설명
transition 메소드에서 배틀 씬으로 이동하는 조건 하에 호출되는 메소드이다.
BattleStart 이미지로 화면을 전환하고, 잠시 그래픽을 멈춘다.
Get Fade Out Speed
함수 목적 : 기본 페이드 아웃 속도를 조절하는 메소드이다.
함수 내용
def fadeout_speed
return 30
end
설명
기본 페이드 아웃 속도는 30이다. 제작자가 자유롭게 조정할 수 있다.
Get Fade In Speed
함수 목적 : 기본 페이드 인 속도를 조절하는 메소드이다.
함수 내용
def fadeout_speed
return 30
end
설명
기본 페이드 인 속도는 30이다. 제작자가 자유롭게 조정할 수 있다.
Get Fade Out Speed for Title Screen Transition
함수 목적 : 타이틀 씬으로 전환할 때 페이드 아웃 속도를 조절하는 메소드이다.
함수 내용
def fadeout_speed_to_title
return 60
end
설명
기본 타이틀 씬 전환 페이드 아웃 속도는 60이다. 제작자가 자유롭게 조정할 수 있다.
이 34개의 메소드 중, 제작자가 응용할만한 부분을 생각해 보자.
B키를 눌러 메뉴를 호출할 수도 있겠지만, 다른 키를 눌러 메뉴를 호출할 수도 있을 것이다. 심지어는 두 개 이상의 키를 눌러야 메뉴를 호출할 수도 있다.
게임 엔딩의 보상으로, 디버그 씬을 테스트 게임에서만 호출하지 않고 실제 게임에서 호출하게 만들 수도 있을 것이다.
이외에 생각나는 부분이 있다면 댓글로 남겨 보자. 강좌로 만들어질 수도 있다.
물론 쌍쌍뱌의 능력이 닿는 영역까지만 말이다.
다음 시간에는 메뉴 호출 키를 변경 해 보고, 그 다음 시간에는 디버그 씬을 테스트 중이 아니어도 호출할 수 있게 해 보겠다.
'프로그래밍 > RPG Maker VXACE' 카테고리의 다른 글
[스크립트 008] 테스트 게임이 아닐 때에도 디버그 씬 부르기 (0) | 2018.01.22 |
---|---|
[스크립트 007] 메뉴 호출 키 변경하기와 Input의 이해 (0) | 2018.01.19 |
[스크립트 005] 맵 씬 스크립트 - 해부편 (1) (0) | 2018.01.17 |
[스크립트 004] 게임 도중 타이틀 이미지 변경하기 (0) | 2018.01.16 |
[스크립트 003] 타이틀 화면 없애고 맵부터 시작하기 (0) | 2018.01.15 |
댓글
이 글 공유하기
다른 글
-
[스크립트 008] 테스트 게임이 아닐 때에도 디버그 씬 부르기
[스크립트 008] 테스트 게임이 아닐 때에도 디버그 씬 부르기
2018.01.22 -
[스크립트 007] 메뉴 호출 키 변경하기와 Input의 이해
[스크립트 007] 메뉴 호출 키 변경하기와 Input의 이해
2018.01.19 -
[스크립트 005] 맵 씬 스크립트 - 해부편 (1)
[스크립트 005] 맵 씬 스크립트 - 해부편 (1)
2018.01.17 -
[스크립트 004] 게임 도중 타이틀 이미지 변경하기
[스크립트 004] 게임 도중 타이틀 이미지 변경하기
2018.01.16