Euh sinon... y'a un option dans rmvx c'est "Un pas vers le héros". Donc suffit de faire la même méthode mais à la place du héros la position définie.
Ajoute ca quelque part au dessus de main :
- Code:
-
#===============================================================
# ● [VX] Rejoindre un point sur la map
#--------------------------------------------------------------
# ● Par Blockade
# ● http://rpg-maker-vx.bbactif.com/forum.htm
# ● Crée le 15/09/2009
# ● Version 1.0
#--------------------------------------------------------------
#===============================================================
def rejoindre(event_id,x,y)
chara = $game_map.events[event_id]
chara.move_toward_place(x,y)
end
class Game_Character
#--------------------------------------------------------------------------
# * Move toward Player
#--------------------------------------------------------------------------
def move_toward_place(x,y)
sx = distance_x_from_place(x)
sy = distance_y_from_place(y)
if sx != 0 or sy != 0
if sx.abs > sy.abs # Horizontal distance is longer
sx > 0 ? move_left : move_right # Prioritize left-right
if @move_failed and sy != 0
sy > 0 ? move_up : move_down
end
else # Vertical distance is longer
sy > 0 ? move_up : move_down # Prioritize up-down
if @move_failed and sx != 0
sx > 0 ? move_left : move_right
end
end
end
end
#--------------------------------------------------------------------------
# * Calculate X Distance From Player
#--------------------------------------------------------------------------
def distance_x_from_place(x)
sx = @x - x
if $game_map.loop_horizontal? # When looping horizontally
if sx.abs > $game_map.width / 2 # Larger than half the map width?
sx -= $game_map.width # Subtract map width
end
end
return sx
end
#--------------------------------------------------------------------------
# * Calculate Y Distance From Player
#--------------------------------------------------------------------------
def distance_y_from_place(y)
sy = @y - y
if $game_map.loop_vertical? # When looping vertically
if sy.abs > $game_map.height / 2 # Larger than half the map height?
sy -= $game_map.height # Subtract map height
end
end
return sy
end
end
On doit faire 2 évent :
Tu fait un évent en processus parallèle. Puis "Déplacer un événement", "Appeler un script" et tu marque [code]rejoindre(Id_event,pos_x,pos_y)|/code]
Ou id_event c'est l'ID de ton évent.
Pos_x : Position X d'arrivée
Pos_y : Position Y d'arrivée
Tu coches répéter déplacement et ignorer si impossible. Dans le même évent, tu fait une deuxième page vide qui s'active si l'interrupteur x est activé (remplace x par n'importe quel interrupteur)
Et pour finir un autre évent en processus parallèle avec dedans :
Condition > 4 éme page > script > $game_player.x == pos_x
Et dans cette condition :
Condition > 4 éme page > script > $game_player.y == pos_y
Et dans cette condition : Activer l'interrupteur x.
(pos_x est la position d'arrivée X, et pos_y position d'arrivée Y)
Et voila ca marche !