aller dans l'éditeur de script et faite un nouveau script au dessu de main, vous le nommer comme vous voulez, et vous entrez ce code:
# ■ XRXS22. Systême de déplacement par pixel.
# Par 桜雅 在土.
#==============================================================================
# ■ Game_Character
#==============================================================================
class Game_Character
#--------------------------------------------------------------------------
# ● Initialisation
#--------------------------------------------------------------------------
alias xrxs22_initialize initialize
def initialize
xrxs22_initialize
@step_count_decimal = 0.00
@offsetable = 0.375
end
#--------------------------------------------------------------------------
# ● Possibilité de passage
# distance : longueur de migration
#--------------------------------------------------------------------------
def xc_passable?(x, y, d)
# La nouvelle coordonnée est calculée
case d
when 2
y += $fineness
when 4
x -= $fineness
when 6
x += $fineness
when 8
y -= $fineness
when 1
x -= $fineness
y += $fineness
when 3
x += $fineness
y += $fineness
when 7
x -= $fineness
y -= $fineness
when 9
x += $fineness
y -= $fineness
end
new_x1 = x.floor
new_x2 = x.ceil
new_y1 = y.floor
new_y2 = y.ceil
if ((($game_player.x == new_x1 and $game_player.y == new_y1) or passable?(new_x1, new_y1, 0)) and
(($game_player.x == new_x2 and $game_player.y == new_y1) or passable?(new_x2, new_y1, 0)) and
(($game_player.x == new_x1 and $game_player.y == new_y2) or passable?(new_x1, new_y2, 0)) and
(($game_player.x == new_x2 and $game_player.y == new_y2) or passable?(new_x2, new_y2, 0)))
return true
end
return false
end
#--------------------------------------------------------------------------
# ● Déplacement vers le bas
#--------------------------------------------------------------------------
def move_down(turn_enabled = true)
# Vers la direction basse du regard actuel
if turn_enabled
turn_down
end
# Vers la direction basse du regard actuel
turn_down
# Si le déplacement est possible
if xc_passable?(@x, @y, 2)
# Renouvellement des coordonnées
@y += $fineness
# Augmentation des pas
@step_count_decimal += $fineness
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch(@x.round, (@y + $fineness).ceil)
# Glissement
if @x%1 <= @offsetable and passable?(@x.floor, @y + 1, 0)
move_left(turn_enabled)
elsif @x%1 >= 1-@offsetable and passable?(@x.ceil, @y + 1, 0)
move_right(turn_enabled)
end
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la gauche
#--------------------------------------------------------------------------
def move_left(turn_enabled = true)
# Vers la direction gauche du regard actuel
if turn_enabled
turn_left
end
# Vers la direction gauche du regard actuel
turn_left
# Si le déplacement est possible
if xc_passable?(@x, @y, 4)
# Renouvellement des coordonnées
@x -= $fineness
# Augmentation des pas
@step_count_decimal += $fineness
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x - $fineness).floor, @y.round)
# Glissement
if @y%1 <= @offsetable and passable?(@x - 1, @y.floor, 0)
move_up(turn_enabled)
elsif @y%1 >= 1-@offsetable and passable?(@x - 1, @y.ceil, 0)
move_down(turn_enabled)
end
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la droite
# turn_enabled : Le drapeau qui permet la modification de direction à
# cet endroit
#--------------------------------------------------------------------------
def move_right(turn_enabled = true)
# Vers la direction droite du regard actuel
if turn_enabled
turn_right
end
# Vers la direction droite du regard actuel
turn_right
# Si le déplacement est possible
if xc_passable?(@x, @y, 6)
# Renouvellement des coordonnées
@x += $fineness
# Augmentation des pas
@step_count_decimal += $fineness
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x + $fineness).floor, @y.round)
# Glissement
if @y%1 <= @offsetable and passable?(@x.floor + 1, @y.floor, 0)
move_up(turn_enabled)
elsif @y%1 >= 1-@offsetable and passable?(@x.floor + 1, @y.ceil, 0)
move_down(turn_enabled)
end
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers le haut
# turn_enabled : Le drapeau qui permet la modification de direction à
# cet endroit
#--------------------------------------------------------------------------
def move_up(turn_enabled = true)
# Vers la direction haute du regard actuel
if turn_enabled
turn_up
end
# Vers la direction haute du regard actuel
turn_up
# Si le déplacement est possible
if xc_passable?(@x, @y,
# Renouvellement des coordonnées
@y -= $fineness
# Augmentation des pas
@step_count_decimal += $fineness
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch(@x.round, (@y - $fineness).ceil)
# Glissement
if @x%1 <= @offsetable and passable?(@x.floor, @y - 1, 0)
move_left(turn_enabled)
elsif @x%1 >= 1-@offsetable and passable?(@x.ceil, @y - 1, 0)
move_right(turn_enabled)
end
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la diagonale bas-gauche
#--------------------------------------------------------------------------
def move_lower_left
# 向き固定でない場合
unless @direction_fix
# 右向きだった場合は左を、上向きだった場合は下を向く
@direction = (@direction == 6 ? 4 : @direction == 8 ? 2 : @direction)
end
stepped = false
# Si le déplacement est possible
if xc_passable?(@x, @y, 1)
# Renouvellement des coordonnées
@x -= $fineness
@y += $fineness
stepped = true
elsif xc_passable?(@x, @y, 4)
@x -= $fineness
stepped = true
elsif xc_passable?(@x, @y, 2)
@y += $fineness
stepped = true
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x - $fineness).round, (@y + $fineness).ceil)
end
# Augmentation des pas
@step_count_decimal += $fineness if stepped
if @step_count_decimal >= 1
increase_steps
@step_count_decimal -= 1
end
end
#--------------------------------------------------------------------------
# ● Déplacement vers la diagonale bas-droite
#--------------------------------------------------------------------------
def move_lower_right
# 向き固定でない場合
unless @direction_fix
# 左向きだった場合は右を、上向きだった場合は下を向く
@direction = (@direction == 4 ? 6 : @direction == 8 ? 2 : @direction)
end
stepped = false
# Si le déplacement est possible
if xc_passable?(@x, @y, 3)
# Renouvellement des coordonnées
@x += $fineness
@y += $fineness
stepped = true
elsif xc_passable?(@x, @y, 6)
@x += $fineness
stepped = true
elsif xc_passable?(@x, @y, 2)
@y += $fineness
stepped = true
# Si le déplacement est impossible
else
# Début de la décision du contact de l'évènement
#+ Ouais, ça veut pas dire grand chose. En fait, le script regarde si le
#+ protagoniste touche un évènement.
check_event_trigger_touch((@x + $fineness).ceil, (@y + $fineness).ceil)
end