------------------------------------------------------------
# 카메라 탑재
#
# 전투중에 여러가지 움직입니다.
# 기본적으로 도입하는 것만으로 괜찮습니다.
#
# 2005.5.18 버그 수정
# Arrow_Actor 수정
# self.enemy → self.actor
# 어리석은 미스를 범하고 있었습니다.
#
# 2005.11.5 갱신
# 설정 항목을 늘렸습니다.
# 몇개의 항목은, 디폴트(액터가 배틀 필드상에 없다)상태라면
# 이상하게 되므로, 적절 설정해 주세요.
# (데포 상태로true(으)로 하면 마즈이의 것에는★을 붙이고 있습니다)
module MoMo_Camera
# 카메라의 이동에 걸치는 프레임수의 초기치
MOVE_SPEED_INI = 8
# 카메라의 줌에 걸치는 프레임수의 초기치
ZOOM_SPEED_INI = 8
# 배틀 백 사진확대율 추가치(0.0그리고 사진확대 없음)
BATTLEBACK_ZOOM = 1.0
# 액터도 카메라의 영향을 받도록(듯이) 한다 ★
# (★(이)가 붙어 있는 항목을 true (으)로 하는 경우 등은 이쪽도 true (으)로 해 주세요)
CAMERA_UPDATE_ACTOR = false
# 에너미 통상 공격시, 행동자를 주시한다
ACTIVE_LOOK_ENEMY_NOMAL_ATTACK = true
# 에너미 방어시, 행동자를 주시한다
ACTIVE_LOOK_ENEMY_GUARD = true
# 에너미 도주시, 행동자를 주시한다
ACTIVE_LOOK_ENEMY_ESCAPE = true
# 에너미 스킬 사용시, 행동자를 주시한다
ACTIVE_LOOK_ENEMY_SKILL = true
# 에너미 선택시, 선택 에너미를 주시한다
ACTIVE_LOOK_ENEMY_SELECT = true
# 에너미 통상 공격시, 대상자를 주시한다(대상이 액터때) ★
TARGET_LOOK_ENEMY_NOMAL_ATTACK_TR_ACTOR = false
# 에너미 통상 공격시, 대상자를 주시한다(대상이 에너미때)
TARGET_LOOK_ENEMY_NOMAL_ATTACK_TR_ENEMY = true
# 에너미 스킬 사용시, 대상자를 주시한다(대상이 액터때) ★
TARGET_LOOK_ENEMY_SKILL_TR_ACTOR = false
# 에너미 스킬 사용시, 대상자를 주시한다(대상이 에너미때)
TARGET_LOOK_ENEMY_SKILL_TR_ENEMY = true
# 에너미 위기 발생시는 문답 무용으로 대상을 주시한다(대상이 액터때) ★
CLITICAL_LOOK_ENEMY_TR_ACTOR = false
# 에너미 위기 발생시는 문답 무용으로 대상을 주시한다(대상이 에너미때)
CLITICAL_LOOK_ENEMY_TR_ENEMY = true
# 에너미 위기 발생시의 줌 배율(줌 하고 싶지 않을 때는0.0(을)를 설정)
CRITICAL_ZOOM_ENEMY = 0.3
# 액터 통상 공격시, 행동자를 주시한다 ★
ACTIVE_LOOK_ACTOR_NOMAL_ATTACK = false
# 액터 방어시, 행동자를 주시한다 ★
ACTIVE_LOOK_ACTOR_GUARD = false
# 액터 도주시, 행동자를 주시한다 ★
ACTIVE_LOOK_ACTOR_ESCAPE = false
# 액터 스킬 사용시, 행동자를 주시한다 ★
ACTIVE_LOOK_ACTOR_SKILL = false
# 액터 아이템 사용시, 행동자를 주시한다 ★
ACTIVE_LOOK_ACTOR_ITEM = false
# 액터 선택시, 선택 액터를 주시한다 ★
ACTIVE_LOOK_ACTOR_SELECT = false
# 액터 통상 공격시, 대상자를 주시한다(대상이 액터때) ★
TARGET_LOOK_ACTOR_NOMAL_ATTACK_TR_ACTOR = false
# 액터 통상 공격시, 대상자를 주시한다(대상이 에너미때)
TARGET_LOOK_ACTOR_NOMAL_ATTACK_TR_ENEMY = true
# 액터 스킬 사용시, 대상자를 주시한다(대상이 액터때) ★
TARGET_LOOK_ACTOR_SKILL_TR_ACTOR = false
# 액터 스킬 사용시, 대상자를 주시한다(대상이 에너미때)
TARGET_LOOK_ACTOR_SKILL_TR_ENEMY = true
# 액터 아이템 사용시, 대상자를 주시한다(대상이 액터때) ★
TARGET_LOOK_ACTOR_ITEM_TR_ACTOR = false
# 액터 아이템 사용시, 대상자를 주시한다(대상이 에너미때)
TARGET_LOOK_ACTOR_ITEM_TR_ENEMY = true
# 액터 위기 발생시는 문답 무용으로 대상을 주시한다(대상이 액터때) ★
CLITICAL_LOOK_ACTOR_TR_ACTOR = true
# 액터 위기 발생시는 문답 무용으로 대상을 주시한다(대상이 에너미때)
CLITICAL_LOOK_ACTOR_TR_ENEMY = true
# 액터 위기 발생시의 줌 배율(줌 하고 싶지 않을 때는0.0(을)를 설정)
CRITICAL_ZOOM_ACTOR = 0.3
# 에너미 슬립 데미지시에 주시한다
LOOK_ENEMY_SLIP_DAMAGE = true
# 액터 슬립 데미지시에 주시한다 ★
LOOK_ACTOR_SLIP_DAMAGE = false
# 커멘드 입력시에, 액터를 주시 ★
LOOK_ACTOR_COMMAND_INPUT = false
# 행동 종료마다 카메라를 센터링
EACH_ACTION_CENTERING = true
# 전체 공격시의 줌율
ALL_ATTACK_ZOOM = 0.6
end
class Battle_Camera
attr_accessor :x
attr_accessor :y
attr_accessor :zoom
attr_accessor :new_x
attr_accessor :new_y
attr_accessor :new_zoom
def initialize
@x = 320
@y = 160
@zoom = 1.0
@new_x = @x
@new_y = @y
@dis_x = 0
@dis_y = 0
@dis_zoom = 0.0
@new_zoom = @zoom
@move_speed = MoMo_Camera::MOVE_SPEED_INI
@zoom_speed = MoMo_Camera::ZOOM_SPEED_INI
end
# 새로운 이동처 설정
def new_x=(newx)
@new_x = newx
@dis_x = (@x - @new_x).abs
end
def new_y=(newy)
@new_y = newy
@dis_y = (@y - @new_y).abs
end
def new_zoom=(newz)
@new_zoom = newz
@dis_zoom = (@zoom - @new_zoom).abs
end
# 카메라 세트
def set(x, y, zoom=nil, speed=nil)
unless speed.nil?
@move_speed = speed
@zoom_speed = speed
end
self.new_x = x
self.new_y = y
self.new_zoom = zoom unless zoom.nil?
end
# 카메라를 한가운데에
def center(zoom=1.0)
self.new_x = 320
self.new_y = 160
self.new_zoom = zoom
end
# 버틀러 주시
def battler_look(battler)
hei = get_battler_height(battler)
zoom = [160.0 / hei, 0.8].max
self.new_zoom = zoom
self.new_x = battler.screen_x
self.new_y = (battler.screen_y - hei / 2 * [[@new_zoom, 1.0].max, 1.5].min).truncate
end
# 버틀러의 계산 여러가지
def battler_x_plus(battler)
dis = battler.screen_x - @x
val = dis * (@zoom - 1.0)
return val
end
def pos_battler_x(battler)
return battler.screen_x - (@x - 320)
end
def battler_x(battler)
return pos_battler_x(battler) + battler_x_plus(battler)
end
def battler_y_plus(battler)
dis = battler.screen_y - @y
val = dis * (@zoom - 1.0)
return val
end
def pos_battler_y(battler)
return battler.screen_y - (@y - 160)
end
def battler_y(battler)
return pos_battler_y(battler) + battler_y_plus(battler)
end
# 갱신
def update
if @x != @new_x
if @new_x - @x > 0
@x = [@x + move_speed_x, @new_x].min
else
@x = [@x - move_speed_x, @new_x].max
end
end
if @y != @new_y
if @new_y - @y > 0
@y = [@y + move_speed_y, @new_y].min
else
@y = [@y - move_speed_y, @new_y].max
end
end
if @zoom != @new_zoom
if @new_zoom - @zoom > 0
@zoom = [@zoom + zoom_speed, @new_zoom].min
else
@zoom = [@zoom - zoom_speed, @new_zoom].max
end
end
end
# 이동거리 계산
def move_speed_x
return [(@dis_x / @move_speed).to_i, 1].max
end
def move_speed_y
return [(@dis_y / @move_speed).to_i, 1].max
end
# 줌 배율 계산
def zoom_speed
return [(@dis_zoom / @zoom_speed), 0.01].max
end
def get_battler_height(battler)
bammy = get_battler_bmp(battler)
return bammy.height
end
def get_battler_bmp(battler)
return RPG::Cache.battler(battler.battler_name, battler.battler_hue)
end
def move?
return (@x != @new_x or @y != @new_y or @zoom != @new_zoom)
end
end
#==============================================================================
# ■ Spriteset_Battle
#------------------------------------------------------------------------------
# 배틀 화면의 스프라이트를 정리한 클래스입니다.이 클래스는 Scene_Battle 곳간
# 스의 내부에서 사용됩니다.
#==============================================================================
class Spriteset_Battle
attr_accessor :battle_camera
#--------------------------------------------------------------------------
# ● 오브젝트 초기화
#--------------------------------------------------------------------------
alias spriteset_battle_battle_camera_initialize initialize
def initialize
@battle_camera = Battle_Camera.new
spriteset_battle_battle_camera_initialize
@battleback_sprite.ox = @viewport1.rect.width / 2
@battleback_sprite.oy = @viewport1.rect.height / 2
camera_battleback_scroll
end
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
alias spriteset_battle_battle_camera_update update
def update
spriteset_battle_battle_camera_update
camera_update
end
# 갱신하는 버틀러의 지정
def camera_update_battlers
if MoMo_Camera::CAMERA_UPDATE_ACTOR
return @enemy_sprites + @actor_sprites
else
return @enemy_sprites
end
end
# 카메라 갱신
def camera_update
@battle_camera.update
camera_battleback_scroll
camera_battleback_zoom
camera_battler_update
end
# 카메라 갱신:배틀 백스크롤
def camera_battleback_scroll
# 배틀가방의 계산 여러가지
view_width = @viewport1.rect.width / 2
view_height = @viewport1.rect.height / 2
@battleback_sprite.x = view_width + (view_width - @battle_camera.x) * @battle_camera.zoom
@battleback_sprite.y = view_height + (view_height - @battle_camera.y) * @battle_camera.zoom
end
# 카메라 갱신:배틀 백 줌
def camera_battleback_zoom
@battleback_sprite.zoom_x = @battle_camera.zoom + MoMo_Camera::BATTLEBACK_ZOOM
@battleback_sprite.zoom_y = @battle_camera.zoom + MoMo_Camera::BATTLEBACK_ZOOM
end
# 카메라 갱신:버틀러 스프라이트 갱신
def camera_battler_update
for sprite in camera_update_battlers
battler_sprite_zoom(sprite)
battler_sprite_scroll(sprite)
end
end
# 카메라 갱신:버틀러 스프라이트 갱신:버틀러 스프라이트 스크롤
def battler_sprite_scroll(sprite)
if !sprite.nil? and !sprite.battler.nil?
sprite.x = @battle_camera.battler_x(sprite.battler)
sprite.y = @battle_camera.battler_y(sprite.battler)
end
end
# 카메라 갱신:버틀러 스프라이트 갱신:버틀러 스프라이트 줌
def battler_sprite_zoom(sprite)
unless sprite.nil?
sprite.zoom_x = @battle_camera.zoom
sprite.zoom_y = @battle_camera.zoom
end
end
end
class Arrow_Actor < Arrow_Base
attr_accessor :camera
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
alias arrow_actor_battle_camera_update update
def update
arrow_actor_battle_camera_update
# 스프라이트의 좌표를 재설정
if self.actor != nil and @camera != nil
self.x = @camera.battler_x(self.actor)
self.y = @camera.battler_y(self.actor)
end
end
end
class Arrow_Enemy < Arrow_Base
attr_accessor :camera
#--------------------------------------------------------------------------
# ● 프레임 갱신
#--------------------------------------------------------------------------
alias arrow_enemy_battle_camera_update update
def update
arrow_enemy_battle_camera_update
# 스프라이트의 좌표를 재설정
if self.enemy != nil and @camera != nil
self.x = @camera.battler_x(self.enemy)
self.y = @camera.battler_y(self.enemy)
end
end
end
class Scene_Battle
def camera
return @spriteset.battle_camera
end
# 행동측 애니메이션중의 촬영 기술 판정
def camera_action_judge_active
if @active_battler.is_a?(Game_Enemy)
case @active_battler.current_action.kind
when 0
camera_action_judge_active_basic_enemy
when 1
camera_action_judge_active_skill_enemy
when 2
camera_action_judge_active_item_enemy
end
else
case @active_battler.current_action.kind
when 0
camera_action_judge_active_basic_actor
when 1
camera_action_judge_active_skill_actor
when 2
camera_action_judge_active_item_actor
end
end
end
# 행동측 애니메이션중의 촬영 기술(에너미):기본
def camera_action_judge_active_basic_enemy
case @active_battler.current_action.basic
when 0
camera.battler_look(@active_battler) if MoMo_Camera::ACTIVE_LOOK_ENEMY_NOMAL_ATTACK
when 1
camera.battler_look(@active_battler) if MoMo_Camera::ACTIVE_LOOK_ENEMY_GUARD
when 2
camera.battler_look(@active_battler) if MoMo_Camera::ACTIVE_LOOK_ENEMY_ESCAPE
end
end
# 행동측 애니메이션중의 촬영 기술(에너미):스킬
def camera_action_judge_active_skill_enemy
camera.battler_look(@active_battler) if MoMo_Camera::ACTIVE_LOOK_ENEMY_SKILL
end
# 행동측 애니메이션중의 촬영 기술(에너미):아이템(일단 실장)
def camera_action_judge_active_item_enemy
camera.battler_look(@active_battler)
end
# 행동측 애니메이션중의 촬영 기술(액터):기본
def camera_action_judge_active_basic_actor
case @active_battler.current_action.basic
when 0
camera.battler_look(@active_battler) if MoMo_Camera::ACTIVE_LOOK_ACTOR_NOMAL_ATTACK
when 1
camera.battler_look(@active_battler) if MoMo_Camera::ACTIVE_LOOK_ACTOR_GUARD
when 2
camera.battler_look(@active_battler) if MoMo_Camera::ACTIVE_LOOK_ACTOR_ESCAPE
end
end
# 행동측 애니메이션중의 촬영 기술(액터):스킬
def camera_action_judge_active_skill_actor
camera.battler_look(@active_battler) if MoMo_Camera::ACTIVE_LOOK_ACTOR_SKILL
end
# 행동측 애니메이션중의 촬영 기술(액터):아이템
def camera_action_judge_active_item_actor
camera.battler_look(@active_battler) if MoMo_Camera::ACTIVE_LOOK_ACTOR_ITEM
end
# 대상측 애니메이션중의 촬영 기술 판정
def camera_action_judge_target
if @active_battler.is_a?(Game_Enemy)
case @active_battler.current_action.kind
when 0
camera_action_judge_target_basic_enemy
when 1
camera_action_judge_target_skill_enemy
when 2
camera_action_judge_target_item_enemy
end
else
case @active_battler.current_action.kind
when 0
camera_action_judge_target_basic_actor
when 1
camera_action_judge_target_skill_actor
when 2
camera_action_judge_target_item_actor
end
end
end
# 대상측 애니메이션중의 촬영 기술(에너미):기본
def camera_action_judge_target_basic_enemy
case @active_battler.current_action.basic
when 0
camera_action_judge_target_basic_enemy_attack
when 1
camera_action_judge_target_basic_enemy_guard
when 2
camera_action_judge_target_basic_enemy_escape
when 3
camera_action_judge_target_basic_enemy_none
end
end
# 대상측 애니메이션중의 촬영 기술(에너미):기본:공격
def camera_action_judge_target_basic_enemy_attack
if @target_battlers.size > 1
camera.center(MoMo_Camera::ALL_ATTACK_ZOOM)
else
if @target_battlers[0].is_a?(Game_Actor)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ENEMY_NOMAL_ATTACK_TR_ACTOR
if @target_battlers[0].critical
if MoMo_Camera::CLITICAL_LOOK_ENEMY_TR_ACTOR
camera.battler_look(@target_battlers[0])
end
camera.new_zoom = camera.new_zoom + MoMo_Camera::CRITICAL_ZOOM_ENEMY
end
elsif @target_battlers[0].is_a?(Game_Enemy)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ENEMY_NOMAL_ATTACK_TR_ENEMY
if @target_battlers[0].critical
if MoMo_Camera::CLITICAL_LOOK_ENEMY_TR_ENEMY
camera.battler_look(@target_battlers[0])
end
camera.new_zoom = camera.new_zoom + MoMo_Camera::CRITICAL_ZOOM_ENEMY
end
else
camera.center
end
end
end
# 대상측 애니메이션중의 촬영 기술(에너미):기본:방어
def camera_action_judge_target_basic_enemy_guard
end
# 대상측 애니메이션중의 촬영 기술(에너미):기본:도주
def camera_action_judge_target_basic_enemy_escape
end
# 대상측 애니메이션중의 촬영 기술(에너미):기본:아무것도 하지 않는다
def camera_action_judge_target_basic_enemy_none
end
# 대상측 애니메이션중의 촬영 기술(에너미):스킬
def camera_action_judge_target_skill_enemy
if @target_battlers.size > 1
camera.center(MoMo_Camera::ALL_ATTACK_ZOOM)
elsif @target_battlers.size == 1
if @target_battlers[0].is_a?(Game_Actor)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ENEMY_SKILL_TR_ACTOR
elsif @target_battlers[0].is_a?(Game_Enemy)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ENEMY_SKILL_TR_ENEMY
end
else
camera.center
end
end
# 대상측 애니메이션중의 촬영 기술(에너미):아이템(일단 실장)
def camera_action_judge_target_item_enemy
end
# 대상측 애니메이션중의 촬영 기술(액터):기본
def camera_action_judge_target_basic_actor
case @active_battler.current_action.basic
when 0
camera_action_judge_target_basic_actor_attack
when 1
camera_action_judge_target_basic_actor_guard
when 2
camera_action_judge_target_basic_actor_escape
when 3
camera_action_judge_target_basic_actor_none
end
end
# 대상측 애니메이션중의 촬영 기술(액터):기본:공격
def camera_action_judge_target_basic_actor_attack
if @target_battlers.size > 1
camera.center(MoMo_Camera::ALL_ATTACK_ZOOM)
else
if @target_battlers[0].is_a?(Game_Actor)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ACTOR_NOMAL_ATTACK_TR_ACTOR
if @target_battlers[0].critical
if MoMo_Camera::CLITICAL_LOOK_ACTOR_TR_ACTOR
camera.battler_look(@target_battlers[0])
end
camera.new_zoom = camera.new_zoom + MoMo_Camera::CRITICAL_ZOOM_ACTOR
end
elsif @target_battlers[0].is_a?(Game_Enemy)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ACTOR_NOMAL_ATTACK_TR_ENEMY
if @target_battlers[0].critical
if MoMo_Camera::CLITICAL_LOOK_ACTOR_TR_ENEMY
camera.battler_look(@target_battlers[0])
end
camera.new_zoom = camera.new_zoom + MoMo_Camera::CRITICAL_ZOOM_ACTOR
end
else
camera.center
end
end
end
# 대상측 애니메이션중의 촬영 기술(에너미):기본:방어
def camera_action_judge_target_basic_actor_guard
end
# 대상측 애니메이션중의 촬영 기술(에너미):기본:도주
def camera_action_judge_target_basic_actor_escape
end
# 대상측 애니메이션중의 촬영 기술(에너미):기본:아무것도 하지 않는다
def camera_action_judge_target_basic_actor_none
end
# 대상측 애니메이션중의 촬영 기술(액터):스킬
def camera_action_judge_target_skill_actor
if @target_battlers.size > 1
camera.center(MoMo_Camera::ALL_ATTACK_ZOOM)
elsif @target_battlers.size == 1
if @target_battlers[0].is_a?(Game_Actor)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ACTOR_SKILL_TR_ACTOR
elsif @target_battlers[0].is_a?(Game_Enemy)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ACTOR_SKILL_TR_ENEMY
end
else
camera.center
end
end
# 대상측 애니메이션중의 촬영 기술(액터):아이템
def camera_action_judge_target_item_actor
if @target_battlers.size > 1
camera.center(MoMo_Camera::ALL_ATTACK_ZOOM)
elsif @target_battlers.size == 1
if @target_battlers[0].is_a?(Game_Actor)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ACTOR_ITEM_TR_ACTOR
elsif @target_battlers[0].is_a?(Game_Enemy)
camera.battler_look(@target_battlers[0]) if MoMo_Camera::TARGET_LOOK_ACTOR_ITEM_TR_ENEMY
else
end
else
camera.center
end
end
#--------------------------------------------------------------------------
# ● 파티 커멘드 국면 개시
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_start_phase2 start_phase2
def start_phase2
camera.center
scene_battle_battle_camera_start_phase2
end
#--------------------------------------------------------------------------
# ● 애프터 배틀 국면 개시
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_start_phase5 start_phase5
def start_phase5
camera.center
scene_battle_battle_camera_start_phase5
end
#--------------------------------------------------------------------------
# ● 다음의 액터의 커멘드 입력에
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_phase3_next_actor phase3_next_actor
def phase3_next_actor
scene_battle_battle_camera_phase3_next_actor
if @active_battler != nil and MoMo_Camera::LOOK_ACTOR_COMMAND_INPUT
camera.battler_look(@active_battler)
end
end
#--------------------------------------------------------------------------
# ● 전의 액터의 커멘드 입력에
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_phase3_prior_actor phase3_prior_actor
def phase3_prior_actor
scene_battle_battle_camera_phase3_prior_actor
if @active_battler != nil and MoMo_Camera::LOOK_ACTOR_COMMAND_INPUT
camera.battler_look(@active_battler)
end
end
#--------------------------------------------------------------------------
# ● 액터 선택 개시
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_start_actor_select start_actor_select
def start_actor_select
scene_battle_battle_camera_start_actor_select
if MoMo_Camera::ACTIVE_LOOK_ACTOR_SELECT
@last_arrow_index = nil
@actor_arrow.camera = camera
elsif MoMo_Camera::LOOK_ACTOR_COMMAND_INPUT
camera.center
end
end
#--------------------------------------------------------------------------
# ● 액터 선택 종료
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_end_actor_select end_actor_select
def end_actor_select
scene_battle_battle_camera_end_actor_select
if MoMo_Camera::LOOK_ACTOR_COMMAND_INPUT
camera.battler_look(@active_battler)
else
camera.center
end
end
#--------------------------------------------------------------------------
# ● 에너미 선택 개시
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_start_enemy_select start_enemy_select
def start_enemy_select
scene_battle_battle_camera_start_enemy_select
if MoMo_Camera::ACTIVE_LOOK_ENEMY_SELECT
@last_arrow_index = nil
@enemy_arrow.camera = camera
elsif MoMo_Camera::LOOK_ACTOR_COMMAND_INPUT
camera.center
end
end
#--------------------------------------------------------------------------
# ● 에너미 선택 종료
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_end_enemy_select end_enemy_select
def end_enemy_select
scene_battle_battle_camera_end_enemy_select
if MoMo_Camera::LOOK_ACTOR_COMMAND_INPUT
camera.battler_look(@active_battler)
else
camera.center
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (액터 커멘드 국면 : 액터 선택)
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_update_phase3_actor_select update_phase3_actor_select
def update_phase3_actor_select
scene_battle_battle_camera_update_phase3_actor_select
if MoMo_Camera::ACTIVE_LOOK_ACTOR_SELECT
if @actor_arrow != nil and (@last_arrow_index != @actor_arrow.index)
@last_arrow_index = @actor_arrow.index
camera.battler_look(@actor_arrow.actor)
end
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (액터 커멘드 국면 : 에너미 선택)
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_update_phase3_enemy_select update_phase3_enemy_select
def update_phase3_enemy_select
scene_battle_battle_camera_update_phase3_enemy_select
if MoMo_Camera::ACTIVE_LOOK_ENEMY_SELECT
if @enemy_arrow != nil and (@last_arrow_index != @enemy_arrow.index)
@last_arrow_index = @enemy_arrow.index
camera.battler_look(@enemy_arrow.enemy)
end
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (메인 국면 스텝 1 : 액션 준비)
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_update_phase4_step1 update_phase4_step1
def update_phase4_step1
unless @camera_move
if $game_temp.forcing_battler == nil and @action_battlers.size != 0 and
@action_battlers[0].slip_damage?
camera_action_judge_phase4_step1
end
@camera_move = true
end
return if camera.move?
@camera_move = false
scene_battle_battle_camera_update_phase4_step1
end
def camera_action_judge_phase4_step1
if @action_battlers[0].is_a?(Game_Enemy)
camera.battler_look(@action_battlers[0]) if MoMo_Camera::LOOK_ENEMY_SLIP_DAMAGE
elsif @action_battlers[0].is_a?(Game_Actor)
camera.battler_look(@action_battlers[0]) if MoMo_Camera::LOOK_ACTOR_SLIP_DAMAGE
end
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (메인 국면 스텝 3 : 행동측 애니메이션)
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_update_phase4_step3 update_phase4_step3
def update_phase4_step3
unless @camera_move
camera_action_judge_active
@camera_move = true
end
return if camera.move?
@camera_move = false
scene_battle_battle_camera_update_phase4_step3
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (메인 국면 스텝 4 : 대상측 애니메이션)
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_update_phase4_step4 update_phase4_step4
def update_phase4_step4
unless @camera_move
camera_action_judge_target
@camera_move = true
end
return if camera.move?
@camera_move = false
scene_battle_battle_camera_update_phase4_step4
end
#--------------------------------------------------------------------------
# ● 프레임 갱신 (메인 국면 스텝 6 : 리프레쉬)
#--------------------------------------------------------------------------
alias scene_battle_battle_camera_update_phase4_step6 update_phase4_step6
def update_phase4_step6
scene_battle_battle_camera_update_phase4_step6
camera.center if MoMo_Camera::EACH_ACTION_CENTERING
end
end
============
턴알에서 어떤 몬스터를 공격하라고 지정했을시 그 몬스터가 줌되는 스크립트입니다
예제를 첨부해놨으니 참고하시기바랍니다 ㅇㅂㅇ
상당한데..? 집에서 테스트해볼게!