Game_Character 2

Publié le par chindan

#============================================
# ¡ Game_Character (•ªŠ„’è‹` 2)
#--------------------------------------------
# @ƒLƒƒƒ‰ƒNƒ^[‚ðˆµ‚¤ƒNƒ‰ƒX‚Å‚·B‚±‚̃Nƒ‰ƒX‚Í Game_Player ƒNƒ‰ƒX‚Æ Game_Event
# ƒNƒ‰ƒX‚̃X[ƒp[ƒNƒ‰ƒX‚Æ‚µ‚Ďg—p‚³‚ê‚Ü‚·B
#============================================

class Game_Character
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV
#------------------------------------------
def update
# ƒWƒƒƒ“ƒv’†AˆÚ“®’†A’âŽ~’†‚Å•ªŠò
if jumping?
update_jump
elsif moving?
update_move
else
update_stop
end
# ƒAƒjƒƒJƒEƒ“ƒg‚ªÅ‘å’l‚ð’´‚¦‚½ê‡
# ¦Å‘å’l‚́AŠî–{’l 18 ‚©‚çˆÚ“®‘¬“x * 1 ‚ðˆø‚¢‚½’l
if @anime_count > 18 - @move_speed * 2
# ’âŽ~ŽžƒAƒjƒ‚ª OFF ‚©‚ ’âŽ~’†‚̏ꍇ
if not @step_anime and @stop_count > 0
# ƒpƒ^[ƒ“‚ðƒIƒŠƒWƒiƒ‹‚É–ß‚·
@pattern = @original_pattern
# ’âŽ~ŽžƒAƒjƒ‚ª ON ‚Ü‚½‚Í ˆÚ“®’†‚̏ꍇ
else
# ƒpƒ^[ƒ“‚ðXV
@pattern = (@pattern + 1) % 4
end
# ƒAƒjƒƒJƒEƒ“ƒg‚ðƒNƒŠƒA
@anime_count = 0
end
# ƒEƒFƒCƒg’†‚̏ꍇ
if @wait_count > 0
# ƒEƒFƒCƒgƒJƒEƒ“ƒg‚ðŒ¸‚ç‚·
@wait_count -= 1
return
end
# ˆÚ“®ƒ‹[ƒg‹­§’†‚̏ꍇ
if @move_route_forcing
# ƒJƒXƒ^ƒ€ˆÚ“®
move_type_custom
return
end
# ƒCƒxƒ“ƒgŽÀs‘Ò‹@’†‚Ü‚½‚̓ƒbƒNó‘Ԃ̏ꍇ
if @starting or lock?
# Ž©—¥ˆÚ“®‚Í‚µ‚È‚¢
return
end
# ’âŽ~ƒJƒEƒ“ƒg‚ªˆê’è‚Ì’l (ˆÚ“®•p“x‚©‚çŽZo) ‚ð’´‚¦‚½ê‡
if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
# ˆÚ“®ƒ^ƒCƒv‚Å•ªŠò
case @move_type
when 1 # ƒ‰ƒ“ƒ_ƒ€
move_type_random
when 2 # ‹ß‚­
move_type_toward_player
when 3 # ƒJƒXƒ^ƒ€
move_type_custom
end
end
end
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ƒWƒƒƒ“ƒv)
#------------------------------------------
def update_jump
# ƒWƒƒƒ“ƒvƒJƒEƒ“ƒg‚ð 1 Œ¸‚ç‚·
@jump_count -= 1
# V‚µ‚¢À•W‚ðŒvŽZ
@real_x = (@real_x * @jump_count + @x * 128) / (@jump_count + 1)
@real_y = (@real_y * @jump_count + @y * 128) / (@jump_count + 1)
end
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV (ˆÚ“®)
#------------------------------------------
def update_move
# ˆÚ“®‘¬“x‚©‚çƒ}ƒbƒvÀ•WŒn‚ł̈ړ®‹——£‚É•ÏŠ·
distance = 2 ** @move_speed
# ˜_—À•W‚ªŽÀÀ•W‚æ‚艺‚̏ꍇ
if @y * 128 > @real_y
# ‰º‚Ɉړ®
@real_y = [@real_y + distance, @y * 128].min
end
# ˜_—À•W‚ªŽÀÀ•W‚æ‚荶‚̏ꍇ
if @x * 128 < @real_x
# ¶‚Ɉړ®
@real_x = [@real_x - distance, @x * 128].max
end
# ˜_—À•W‚ªŽÀÀ•W‚æ‚è‰E‚̏ꍇ
if @x * 128 > @real_x
# ‰E‚Ɉړ®
@real_x = [@real_x + distance, @x * 128].min
end
# ˜_—À•W‚ªŽÀÀ•W‚æ‚èã‚̏ꍇ
if @y * 128 < @real_y
# ã‚Ɉړ®
@real_y = [@real_y - distance, @y * 128].max
end
# ˆÚ“®ŽžƒAƒjƒ‚ª ON ‚̏ꍇ
if @walk_anime
# ƒAƒjƒƒJƒEƒ“ƒg‚ð 1.5 ‘‚â‚·
@anime_count += 1.5
# ˆÚ“®ŽžƒAƒjƒ‚ª OFF ‚ŁA’âŽ~ŽžƒAƒjƒ‚ª ON ‚̏ꍇ
elsif @step_anime
# ƒAƒjƒƒJƒEƒ“ƒg‚ð 1 ‘‚â‚·
@anime_count += 1
end
end
#------------------------------------------
# œ ƒtƒŒ[ƒ€XV (’âŽ~)
#------------------------------------------
def update_stop
# ’âŽ~ŽžƒAƒjƒ‚ª ON ‚̏ꍇ
if @step_anime
# ƒAƒjƒƒJƒEƒ“ƒg‚ð 1 ‘‚â‚·
@anime_count += 1
# ’âŽ~ŽžƒAƒjƒ‚ª OFF ‚¾‚ªAŒ»Ý‚̃pƒ^[ƒ“‚ªƒIƒŠƒWƒiƒ‹‚ƈقȂéê‡
elsif @pattern != @original_pattern
# ƒAƒjƒƒJƒEƒ“ƒg‚ð 1.5 ‘‚â‚·
@anime_count += 1.5
end
# ƒCƒxƒ“ƒgŽÀs‘Ò‹@’†‚Ü‚½‚̓ƒbƒNó‘Ô‚Å‚Í‚È‚¢ê‡
# ¦ƒƒbƒN‚́AŽÀs’†‚̃Cƒxƒ“ƒg‚ª—§‚¿Ž~‚܂鏈—
unless @starting or lock?
# ’âŽ~ƒJƒEƒ“ƒg‚ð 1 ‘‚â‚·
@stop_count += 1
end
end
#------------------------------------------
# œ ˆÚ“®ƒ^ƒCƒv : ƒ‰ƒ“ƒ_ƒ€
#------------------------------------------
def move_type_random
# —” 0`5 ‚Å•ªŠò
case rand(6)
when 0..3 # ƒ‰ƒ“ƒ_ƒ€
move_random
when 4 # ˆê•à‘Oi
move_forward
when 5 # ˆêŽž’âŽ~
@stop_count = 0
end
end
#------------------------------------------
# œ ˆÚ“®ƒ^ƒCƒv : ‹ß‚­
#------------------------------------------
def move_type_toward_player
# ƒvƒŒƒCƒ„[‚̍À•W‚Ƃ̍·‚ð‹‚ß‚é
sx = @x - $game_player.x
sy = @y - $game_player.y
# ·‚̐â‘Î’l‚ð‹‚ß‚é
abs_sx = sx > 0 ? sx : -sx
abs_sy = sy > 0 ? sy : -sy
# c‰¡‚ ‚킹‚Ä 20 ƒ^ƒCƒ‹ˆÈã—£‚ê‚Ä‚¢‚éê‡
if sx + sy >= 20
# ƒ‰ƒ“ƒ_ƒ€
move_random
return
end
# —” 0`5 ‚Å•ªŠò
case rand(6)
when 0..3 # ƒvƒŒƒCƒ„[‚ɋ߂­
move_toward_player
when 4 # ƒ‰ƒ“ƒ_ƒ€
move_random
when 5 # ˆê•à‘Oi
move_forward
end
end
#------------------------------------------
# œ ˆÚ“®ƒ^ƒCƒv : ƒJƒXƒ^ƒ€
#------------------------------------------
def move_type_custom
# ’âŽ~’†‚Å‚È‚¯‚ê‚Î’†’f
if jumping? or moving?
return
end
# ˆÚ“®ƒRƒ}ƒ“ƒh‚̃ŠƒXƒg‚̍Ōã‚É“ž’B‚·‚é‚܂Ń‹[ƒv
while @move_route_index < @move_route.list.size
# ˆÚ“®ƒRƒ}ƒ“ƒh‚ðŽæ“¾
command = @move_route.list[@move_route_index]
# ƒRƒ}ƒ“ƒhƒR[ƒh 0 ”Ô (ƒŠƒXƒg‚̍Ōã) ‚̏ꍇ
if command.code == 0
# ƒIƒvƒVƒ‡ƒ“ [“®ì‚ðŒJ‚è•Ô‚·] ‚ª ON ‚̏ꍇ
if @move_route.repeat
# ˆÚ“®ƒ‹[ƒg‚̃Cƒ“ƒfƒbƒNƒX‚ðÅ‰‚É–ß‚·
@move_route_index = 0
end
# ƒIƒvƒVƒ‡ƒ“ [“®ì‚ðŒJ‚è•Ô‚·] ‚ª OFF ‚̏ꍇ
unless @move_route.repeat
# ˆÚ“®ƒ‹[ƒg‹­§’†‚̏ꍇ
if @move_route_forcing and not @move_route.repeat
# ˆÚ“®ƒ‹[ƒg‚Ì‹­§‚ð‰ðœ
@move_route_forcing = false
# ƒIƒŠƒWƒiƒ‹‚̈ړ®ƒ‹[ƒg‚𕜋A
@move_route = @original_move_route
@move_route_index = @original_move_route_index
@original_move_route = nil
end
# ’âŽ~ƒJƒEƒ“ƒg‚ðƒNƒŠƒA
@stop_count = 0
end
return
end
# ˆÚ“®ŒnƒRƒ}ƒ“ƒh (‰º‚Ɉړ®`ƒWƒƒƒ“ƒv) ‚̏ꍇ
if command.code <= 14
# ƒRƒ}ƒ“ƒhƒR[ƒh‚Å•ªŠò
case command.code
when 1 # ‰º‚Ɉړ®
move_down
when 2 # ¶‚Ɉړ®
move_left
when 3 # ‰E‚Ɉړ®
move_right
when 4 # ã‚Ɉړ®
move_up
when 5 # ¶‰º‚Ɉړ®
move_lower_left
when 6 # ‰E‰º‚Ɉړ®
move_lower_right
when 7 # ¶ã‚Ɉړ®
move_upper_left
when 8 # ‰Eã‚Ɉړ®
move_upper_right
when 9 # ƒ‰ƒ“ƒ_ƒ€‚Ɉړ®
move_random
when 10 # ƒvƒŒƒCƒ„[‚ɋ߂­
move_toward_player
when 11 # ƒvƒŒƒCƒ„[‚©‚牓‚´‚©‚é
move_away_from_player
when 12 # ˆê•à‘Oi
move_forward
when 13 # ˆê•àŒã‘Þ
move_backward
when 14 # ƒWƒƒƒ“ƒv
jump(command.parameters[0], command.parameters[1])
end
# ƒIƒvƒVƒ‡ƒ“ [ˆÚ“®‚Å‚«‚È‚¢ê‡‚Í–³Ž‹] ‚ª OFF ‚ŁAˆÚ“®Ž¸”s‚̏ꍇ
if not @move_route.skippable and not moving? and not jumping?
return
end
@move_route_index += 1
return
end
# ƒEƒFƒCƒg‚̏ꍇ
if command.code == 15
# ƒEƒFƒCƒgƒJƒEƒ“ƒg‚ðÝ’è
@wait_count = command.parameters[0] * 2 - 1
@move_route_index += 1
return
end
# Œü‚«•ÏXŒn‚̃Rƒ}ƒ“ƒh‚̏ꍇ
if command.code >= 16 and command.code <= 26
# ƒRƒ}ƒ“ƒhƒR[ƒh‚Å•ªŠò
case command.code
when 16 # ‰º‚ðŒü‚­
turn_down
when 17 # ¶‚ðŒü‚­
turn_left
when 18 # ‰E‚ðŒü‚­
turn_right
when 19 # ã‚ðŒü‚­
turn_up
when 20 # ‰E‚É 90 “x‰ñ“]
turn_right_90
when 21 # ¶‚É 90 “x‰ñ“]
turn_left_90
when 22 # 180 “x‰ñ“]
turn_180
when 23 # ‰E‚©¶‚É 90 “x‰ñ“]
turn_right_or_left_90
when 24 # ƒ‰ƒ“ƒ_ƒ€‚É•ûŒü“]Š·
turn_random
when 25 # ƒvƒŒƒCƒ„[‚Ì•û‚ðŒü‚­
turn_toward_player
when 26 # ƒvƒŒƒCƒ„[‚Ì‹t‚ðŒü‚­
turn_away_from_player
end
@move_route_index += 1
return
end
# ‚»‚Ì‘¼‚̃Rƒ}ƒ“ƒh‚̏ꍇ
if command.code >= 27
# ƒRƒ}ƒ“ƒhƒR[ƒh‚Å•ªŠò
case command.code
when 27 # ƒXƒCƒbƒ` ON
$game_switches[command.parameters[0]] = true
$game_map.need_refresh = true
when 28 # ƒXƒCƒbƒ` OFF
$game_switches[command.parameters[0]] = false
$game_map.need_refresh = true
when 29 # ˆÚ“®‘¬“x‚̕ύX
@move_speed = command.parameters[0]
when 30 # ˆÚ“®•p“x‚̕ύX
@move_frequency = command.parameters[0]
when 31 # ˆÚ“®ŽžƒAƒjƒ ON
@walk_anime = true
when 32 # ˆÚ“®ŽžƒAƒjƒ OFF
@walk_anime = false
when 33 # ’âŽ~ŽžƒAƒjƒ ON
@step_anime = true
when 34 # ’âŽ~ŽžƒAƒjƒ OFF
@step_anime = false
when 35 # Œü‚«ŒÅ’è ON
@direction_fix = true
when 36 # Œü‚«ŒÅ’è OFF
@direction_fix = false
when 37 # ‚·‚蔲‚¯ ON
@through = true
when 38 # ‚·‚蔲‚¯ OFF
@through = false
when 39 # Å‘O–Ê‚É•Ž¦ ON
@always_on_top = true
when 40 # Å‘O–Ê‚É•Ž¦ OFF
@always_on_top = false
when 41 # ƒOƒ‰ƒtƒBƒbƒN•ÏX
@tile_id = 0
@character_name = command.parameters[0]
@character_hue = command.parameters[1]
if @original_direction != command.parameters[2]
@direction = command.parameters[2]
@original_direction = @direction
@prelock_direction = 0
end
if @original_pattern != command.parameters[3]
@pattern = command.parameters[3]
@original_pattern = @pattern
end
when 42 # •s“§–¾“x‚̕ύX
@opacity = command.parameters[0]
when 43 # ‡¬•û–@‚̕ύX
@blend_type = command.parameters[0]
when 44 # SE ‚̉‰‘t
$game_system.se_play(command.parameters[0])
when 45 # ƒXƒNƒŠƒvƒg
result = eval(command.parameters[0])
end
@move_route_index += 1
end
end
end
#------------------------------------------
# œ •à”‘‰Á
#------------------------------------------
def increase_steps
# ’âŽ~ƒJƒEƒ“ƒg‚ðƒNƒŠƒA
@stop_count = 0
end
end

Publié dans poubelle

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article