이건 정말 아무 쓰잘떼기도 없는 짓입니다만...
RPG XP 엔진을 고치는데 관심이 가시는 분들은 써보세요.
캐릭터의 움직임을 수치로 표현하기 위해, 혹은 필요한 변수를 출력하여
눈으로 확인하고자 할 때,
전 디버그 창을 만들어서 썼습니다. -_-;
충돌 검사할 때 만든 소스이고 지금도 쓰고 있어요.
한번 써보시면 대략적인 RPG XP의 프로그래밍 방식을 알 수 있으실지도..
#-------------------------------------------------------------------
# Scene_Map 클래스에서 하겠습니다.
#-------------------------------------------------------------------
class Scene_Map
#------------------------------------------------------------------
# ● 메인 처리
#------------------------------------------------------------------
def main
# 스프라이트 세트를 작성
@spriteset = Spriteset_Map.new
# 메세지 윈도우를 작성
@message_window = Window_Message.new
# !디버그 창 활성!
dwin_new # <-- dwin_new라는 함수를 실행합니다.
# 트란지션 실행
Graphics.transition
# 메인 루프
loop do
# 게임 화면을 갱신
Graphics.update
# 입력 정보를 갱신
Input.update
# !디버그 창 갱신!
dwin_update # <-- dwin_update라는 함수를 실행합니다.
# 프레임 갱신
update
# 화면이 바뀌면 루프를 중단
if $scene != self
break
end
end
# 트란지션 준비
Graphics.freeze
# 스프라이트 세트를 해방
@spriteset.dispose
# 메세지 윈도우를 해방
@message_window.dispose
# 타이틀 화면으로 전환해 안의 경우
if $scene.is_a?(Scene_Title)
# 화면을 페이드아웃
Graphics.transition
Graphics.freeze
end
end
---------------------------------------------------------------------
dwin_new는 loop부분 위에,
dwin_update는 loop 내에 써주셔야합니다.
이 두개의 함수를 스크립트 맨 아래에 추가해줍니다.
#--------------------------------------------------------------------
def dwin_new
#dwin이라는 전역변수에 새로운 윈도우를 만듭니다.
#Window_Base.new 오른쪽에 있는 수치는 각각,
#x위치, y위치, width(길이), height(높이)를 나타냅니다.
@dwin = Window_Base.new(0, 0, 640, 80)
#dwin에 contents라는 내부변수를 만들고 그 안에 출력을 담당할
#Bitmap을 작성합니다. Bitmap.new 오른쪽의 수치는 각각,
#width, height를 나타냅니다.
@dwin.contents = Bitmap.new(600, 40)
end
def dwin_update
if $game_player.y < 3
@dwin.y = 400
end
if $game_player.y > 11
@dwin.y = 0
end
#위의 부분은 사소한 알고리즘입니다. -_-;
#캐릭터가 화면 상단으로 가면 디버그 창은 아래로 가고,
#캐릭터가 화면 하단으로 가면 디버그 창은 위로 갑니다.
@dwin.contents.clear
#Bitmap 내부를 싹 지웁니다.
ax = $game_player.x #캐릭터의 x위치를 ax에 넣었습니다.
ay = $game_player.y #캐릭터의 y위치를 ay에 넣었습니다.
@dwin.contents.draw_text(2, 0, 100, 20, "x=" + sprintf("%.1f", ax).to_s, 0)
@dwin.contents.draw_text(102, 0, 100, 20, "y=" + sprintf("%.1f", ay).to_s, 0)
@dwin.contents.draw_text(202, 0, 150, 20, "chk=" + $game_player.chk.to_s, 0)
@dwin.contents.draw_text(352, 0, 100, 20, "x to i=" + sprintf("%.1f", ax.to_i).to_s, 0)
@dwin.contents.draw_text(452, 0, 100, 20, "y to i=" + sprintf("%.1f", ay.to_i).to_s, 0)
#출력부분입니다. draw_text의 변수는 각각 x, y, width, height, contents, align입니다.
#contents는 출력할 내용을 말합니다. sprintf함수를 쓴 이유는 충돌검사 알고리즘 강좌에서 알려드리죠.
#align은 정렬 위치인데요. 0은 왼쪽으로, 1은 가운데로, 2는 오른쪽으로 정렬합니다.
end
#--------------------------------------------------------------------
끝입니다. -_-;
지금 올린 이 소스는 8방향 이벤트 충돌 검사를 고치는 도중에 쓰던 디버그 창 소스에서 약간 헷갈리는 듯한 부분을 삭제하고 올린겁니다. -_-;
해보시면 참 재미있다는.... 음...
이걸 이용하면 시간이나 돈 출력을 파판처럼 할 수 있겠지요.
가장 기본적인 창 만들기 스크립트였습니다.
RPG XP 엔진을 고치는데 관심이 가시는 분들은 써보세요.
캐릭터의 움직임을 수치로 표현하기 위해, 혹은 필요한 변수를 출력하여
눈으로 확인하고자 할 때,
전 디버그 창을 만들어서 썼습니다. -_-;
충돌 검사할 때 만든 소스이고 지금도 쓰고 있어요.
한번 써보시면 대략적인 RPG XP의 프로그래밍 방식을 알 수 있으실지도..
#-------------------------------------------------------------------
# Scene_Map 클래스에서 하겠습니다.
#-------------------------------------------------------------------
class Scene_Map
#------------------------------------------------------------------
# ● 메인 처리
#------------------------------------------------------------------
def main
# 스프라이트 세트를 작성
@spriteset = Spriteset_Map.new
# 메세지 윈도우를 작성
@message_window = Window_Message.new
# !디버그 창 활성!
dwin_new # <-- dwin_new라는 함수를 실행합니다.
# 트란지션 실행
Graphics.transition
# 메인 루프
loop do
# 게임 화면을 갱신
Graphics.update
# 입력 정보를 갱신
Input.update
# !디버그 창 갱신!
dwin_update # <-- dwin_update라는 함수를 실행합니다.
# 프레임 갱신
update
# 화면이 바뀌면 루프를 중단
if $scene != self
break
end
end
# 트란지션 준비
Graphics.freeze
# 스프라이트 세트를 해방
@spriteset.dispose
# 메세지 윈도우를 해방
@message_window.dispose
# 타이틀 화면으로 전환해 안의 경우
if $scene.is_a?(Scene_Title)
# 화면을 페이드아웃
Graphics.transition
Graphics.freeze
end
end
---------------------------------------------------------------------
dwin_new는 loop부분 위에,
dwin_update는 loop 내에 써주셔야합니다.
이 두개의 함수를 스크립트 맨 아래에 추가해줍니다.
#--------------------------------------------------------------------
def dwin_new
#dwin이라는 전역변수에 새로운 윈도우를 만듭니다.
#Window_Base.new 오른쪽에 있는 수치는 각각,
#x위치, y위치, width(길이), height(높이)를 나타냅니다.
@dwin = Window_Base.new(0, 0, 640, 80)
#dwin에 contents라는 내부변수를 만들고 그 안에 출력을 담당할
#Bitmap을 작성합니다. Bitmap.new 오른쪽의 수치는 각각,
#width, height를 나타냅니다.
@dwin.contents = Bitmap.new(600, 40)
end
def dwin_update
if $game_player.y < 3
@dwin.y = 400
end
if $game_player.y > 11
@dwin.y = 0
end
#위의 부분은 사소한 알고리즘입니다. -_-;
#캐릭터가 화면 상단으로 가면 디버그 창은 아래로 가고,
#캐릭터가 화면 하단으로 가면 디버그 창은 위로 갑니다.
@dwin.contents.clear
#Bitmap 내부를 싹 지웁니다.
ax = $game_player.x #캐릭터의 x위치를 ax에 넣었습니다.
ay = $game_player.y #캐릭터의 y위치를 ay에 넣었습니다.
@dwin.contents.draw_text(2, 0, 100, 20, "x=" + sprintf("%.1f", ax).to_s, 0)
@dwin.contents.draw_text(102, 0, 100, 20, "y=" + sprintf("%.1f", ay).to_s, 0)
@dwin.contents.draw_text(202, 0, 150, 20, "chk=" + $game_player.chk.to_s, 0)
@dwin.contents.draw_text(352, 0, 100, 20, "x to i=" + sprintf("%.1f", ax.to_i).to_s, 0)
@dwin.contents.draw_text(452, 0, 100, 20, "y to i=" + sprintf("%.1f", ay.to_i).to_s, 0)
#출력부분입니다. draw_text의 변수는 각각 x, y, width, height, contents, align입니다.
#contents는 출력할 내용을 말합니다. sprintf함수를 쓴 이유는 충돌검사 알고리즘 강좌에서 알려드리죠.
#align은 정렬 위치인데요. 0은 왼쪽으로, 1은 가운데로, 2는 오른쪽으로 정렬합니다.
end
#--------------------------------------------------------------------
끝입니다. -_-;
지금 올린 이 소스는 8방향 이벤트 충돌 검사를 고치는 도중에 쓰던 디버그 창 소스에서 약간 헷갈리는 듯한 부분을 삭제하고 올린겁니다. -_-;
해보시면 참 재미있다는.... 음...
이걸 이용하면 시간이나 돈 출력을 파판처럼 할 수 있겠지요.
가장 기본적인 창 만들기 스크립트였습니다.