#출처 : http://daiambition.web.fc2.com/materialrgss2.html
#- 이 스크립트는 한글 번역기를 통해 번역한 결과로서, 출처를 명확히 표기했습니다.
#
#사용법 : 스크립트 복/붙 후
# 이벤트 상에서의 스크립트 추가.
# c_zoom(-1, 50) 의 경우 이벤트 넘버 (-1) 인 플레이어의 크기를 50 % 배율로 줄임.
# c_zoom(2, 150) 의 경우, 이벤트 넘버 (2) 인 오브젝트의 크기를 100% 배율로 늘임.
#응용법 : - 맵 상에서 전투 씬 이벤트 등에서의 크기 변화 묘사 시.
# - 특수한 동작의 결과에 의해 줄어든 캐릭터, 오브젝트의 묘사 시.
#### 아래 부터 스크립트 시작입니다. #####
=begin
■캐릭터 확대 축소 RGSS2 DAIpage■ v1.1 ●기능●
·캐릭터 스프라이트를 쑥쑥 로 확대 축소합니다. ★사용예★
※ 스테이트 「소인」등의 연출에.
※ 아주 커지는 이벤트나 소울타리 되는 이벤트의 연출에.
※ 보상을 잡은 순간에는 보상을 조금 아주 크게 해 강조…같은.(무리하게) ●사용법●
이벤트 커멘드의 스크립트로 c_zoom(id, zoom) (을)를 실행하면 지정한 id 의 이벤트가 zoom 의 확대율이 됩니다.
id에는 이벤트 ID(-1로 플레이어, 0으로 이 이벤트)를,
zoom에는 확대율(100이 표준)을 지정. 례:
c_zoom(-1, 50)
# 플레이어를 반의 크기에.
c_zoom(5, 150)
# 이벤트 ID 5 를 1.5배에. 또, c_zoom_2(id, zoom)
(와)과 같이 실행하면 갑자기 지정한 크기가 됩니다. c_zoom_end(id)
(을)를 실행하면 원래대로 돌아갑니다. ●사양●
RGSS의 사양에 의해, 이벤트 캐릭터의 확대 축소의 경우, 장소 이동에 의해서 캐릭터
정보가 리셋트 되기 위해, 확대 축소도 리셋트 됩니다.플레이어에 관한 봐,
해제할 때까지 효과가 계속 됩니다. ●재정의하고 있는 개소● Game_Character, Sprite_Character를 앨리어스(alias)
※같은 개소를 변경하는 스크립트와 병용 했을 경우는 경합 할 가능성이 있습니다. ●갱신 이력●
08/09/15:실행 후, 메뉴 호출등에서 화면 전환을 하면 재차 확대 축소의 동작을 한다
불편을 수정.갑자기 확대 기능을 추가.
=end
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● 공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_accessor :c_zoom
attr_accessor :c_zoom_flg
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
alias dai_c_zoom_initialize initialize
def initialize
dai_c_zoom_initialize
@c_zoom = 100
@c_zoom_flg = false
end
end
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● 캐라크타즘의 개시
#--------------------------------------------------------------------------
def c_zoom(id, zoom)
character = get_character(id)
character.c_zoom_flg = true
character.c_zoom = zoom
end
#--------------------------------------------------------------------------
# ● 캐라크타즘의 종료
#--------------------------------------------------------------------------
def c_zoom_end(id)
character = get_character(id)
character.c_zoom_flg = true
character.c_zoom = 100
end
#--------------------------------------------------------------------------
# ● 캐라크타즘의 종료
#--------------------------------------------------------------------------
def c_zoom_2(id, zoom)
character = get_character(id)
character.c_zoom_flg = false
character.c_zoom = zoom
end
end
#==============================================================================
# ■ Sprite_Character
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
alias dai_c_zoom_update update
def update
dai_c_zoom_update
zoom_update
end
#--------------------------------------------------------------------------
# ● 줌의 갱신
#--------------------------------------------------------------------------
def zoom_update
if @character.c_zoom_flg == false
unless @character.c_zoom == 100
self.zoom_x = @character.c_zoom * 1.00 / 100
self.zoom_y = @character.c_zoom * 1.00 / 100
else @character.c_zoom == 100
self.zoom_x = 1
self.zoom_y = 1
end
else
if @character.c_zoom == 100
if self.zoom_x == 1
zoom_update_flg
return
elsif self.zoom_x < 1
if self.zoom_x >= 0.9
a = 0.01
else
a = 0.05
end
elsif self.zoom_x > 1
if self.zoom_x <= 1.1
a = -0.01
else
a = -0.05
end
end
elsif @character.c_zoom > 100
b = self.zoom_x * 100
if b >= @character.c_zoom
zoom_update_flg
return
elsif self.zoom_x >= (@character.c_zoom * 1.00 / 100) - 0.1
a = 0.01
else
a = 0.05
end
elsif @character.c_zoom < 100
b = self.zoom_x * 100
if b <= @character.c_zoom
zoom_update_flg
return
elsif self.zoom_x <= (@character.c_zoom * 1.00 / 100) + 0.1
a = -0.01
else
a = -0.05
end
end
self.zoom_x += a
self.zoom_y += a
c = self.zoom_x * 100
unless c.integer?
c = c.round * 1.00 / 100
self.zoom_x = c
self.zoom_y = c
end
end
end
#--------------------------------------------------------------------------
# ● 줌 실행중 플래그를 오프
#--------------------------------------------------------------------------
def zoom_update_flg
if @character.c_zoom_flg
@character.c_zoom_flg = false
end
end
end
■캐릭터 확대 축소 RGSS2 DAIpage■ v1.1 ●기능●
·캐릭터 스프라이트를 쑥쑥 로 확대 축소합니다. ★사용예★
※ 스테이트 「소인」등의 연출에.
※ 아주 커지는 이벤트나 소울타리 되는 이벤트의 연출에.
※ 보상을 잡은 순간에는 보상을 조금 아주 크게 해 강조…같은.(무리하게) ●사용법●
이벤트 커멘드의 스크립트로 c_zoom(id, zoom) (을)를 실행하면 지정한 id 의 이벤트가 zoom 의 확대율이 됩니다.
id에는 이벤트 ID(-1로 플레이어, 0으로 이 이벤트)를,
zoom에는 확대율(100이 표준)을 지정. 례:
c_zoom(-1, 50)
# 플레이어를 반의 크기에.
c_zoom(5, 150)
# 이벤트 ID 5 를 1.5배에. 또, c_zoom_2(id, zoom)
(와)과 같이 실행하면 갑자기 지정한 크기가 됩니다. c_zoom_end(id)
(을)를 실행하면 원래대로 돌아갑니다. ●사양●
RGSS의 사양에 의해, 이벤트 캐릭터의 확대 축소의 경우, 장소 이동에 의해서 캐릭터
정보가 리셋트 되기 위해, 확대 축소도 리셋트 됩니다.플레이어에 관한 봐,
해제할 때까지 효과가 계속 됩니다. ●재정의하고 있는 개소● Game_Character, Sprite_Character를 앨리어스(alias)
※같은 개소를 변경하는 스크립트와 병용 했을 경우는 경합 할 가능성이 있습니다. ●갱신 이력●
08/09/15:실행 후, 메뉴 호출등에서 화면 전환을 하면 재차 확대 축소의 동작을 한다
불편을 수정.갑자기 확대 기능을 추가.
=end
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● 공개 인스턴스 변수
#--------------------------------------------------------------------------
attr_accessor :c_zoom
attr_accessor :c_zoom_flg
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
alias dai_c_zoom_initialize initialize
def initialize
dai_c_zoom_initialize
@c_zoom = 100
@c_zoom_flg = false
end
end
#==============================================================================
# ■ Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# ● 캐라크타즘의 개시
#--------------------------------------------------------------------------
def c_zoom(id, zoom)
character = get_character(id)
character.c_zoom_flg = true
character.c_zoom = zoom
end
#--------------------------------------------------------------------------
# ● 캐라크타즘의 종료
#--------------------------------------------------------------------------
def c_zoom_end(id)
character = get_character(id)
character.c_zoom_flg = true
character.c_zoom = 100
end
#--------------------------------------------------------------------------
# ● 캐라크타즘의 종료
#--------------------------------------------------------------------------
def c_zoom_2(id, zoom)
character = get_character(id)
character.c_zoom_flg = false
character.c_zoom = zoom
end
end
#==============================================================================
# ■ Sprite_Character
#==============================================================================
class Sprite_Character < Sprite_Base
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
alias dai_c_zoom_update update
def update
dai_c_zoom_update
zoom_update
end
#--------------------------------------------------------------------------
# ● 줌의 갱신
#--------------------------------------------------------------------------
def zoom_update
if @character.c_zoom_flg == false
unless @character.c_zoom == 100
self.zoom_x = @character.c_zoom * 1.00 / 100
self.zoom_y = @character.c_zoom * 1.00 / 100
else @character.c_zoom == 100
self.zoom_x = 1
self.zoom_y = 1
end
else
if @character.c_zoom == 100
if self.zoom_x == 1
zoom_update_flg
return
elsif self.zoom_x < 1
if self.zoom_x >= 0.9
a = 0.01
else
a = 0.05
end
elsif self.zoom_x > 1
if self.zoom_x <= 1.1
a = -0.01
else
a = -0.05
end
end
elsif @character.c_zoom > 100
b = self.zoom_x * 100
if b >= @character.c_zoom
zoom_update_flg
return
elsif self.zoom_x >= (@character.c_zoom * 1.00 / 100) - 0.1
a = 0.01
else
a = 0.05
end
elsif @character.c_zoom < 100
b = self.zoom_x * 100
if b <= @character.c_zoom
zoom_update_flg
return
elsif self.zoom_x <= (@character.c_zoom * 1.00 / 100) + 0.1
a = -0.01
else
a = -0.05
end
end
self.zoom_x += a
self.zoom_y += a
c = self.zoom_x * 100
unless c.integer?
c = c.round * 1.00 / 100
self.zoom_x = c
self.zoom_y = c
end
end
end
#--------------------------------------------------------------------------
# ● 줌 실행중 플래그를 오프
#--------------------------------------------------------------------------
def zoom_update_flg
if @character.c_zoom_flg
@character.c_zoom_flg = false
end
end
end