Hier dreht sich alles um die RPG-Maker-Reihe von ASCII/Enterbrain. Der RPG-Maker ist ein Tool, mit dem du dir dein eigenes kleines Rollenspiel erstellen kannst. Du findest hier alles, was du dazu brauchst. Aber natürlich umfasst die Community noch mehr!
Hallo liebe Forenmitglieder, beschäftige mich erst seit kurzer Zeit mit dem Rpg Maker und bin auf ein kleines Problem gestoßen, dass ich alleine mit meinen aktuellen Kenntnissen leider nicht lösen kann. Ich möchte einen Tagesablauf von einem Holzfäller simulieren. Dieser soll zu einer bestimmten Zeit zu einem anderen NPC gehen, der andere NPC bewegt sich allerdings zufällig durch die Welt. Wie der Titel dieses Themas beschreibt suche ich also eine Funktion ein Event mittels (Lauf)-Animation zu einem anderen Event zu schicken. Bei Set Move Route bin ich da leider nicht fündig geworden. Auch habe ich im Internet mittels Google und Youtube schon erkundig, Antworten habe ich leider aber nicht gefunden. Ich hoffe auf eure Unterstützung.
Mit dem rm2k würde ich es wie folgt lösen (hab den XP nicht, sicher würde es dort aber auch so funktionieren): - bestimme die Position beider Events mit VAR 1x/1y und 2x/2y - Paralell Event, Bedingung 2x>1x ->move1 right ansonsten move left - Bedingung 2y>1y -> move1 down ansonsten move up - zum Schluss ein weiteres paralell Event, Bedingung 2x=1x, 2y=1y -> Tab"angekommen" an und das erste Event stoppen
Unterm Strich nichts sonderlich schwieriges, aber durch hindernisse in der Map kann der Laufprozess unterbrochen werden. Baue in dem Fall villeicht alle 4 Schritte einen Zufallsschritt ein, das hilft meistens. Villeicht solltest du dem anderen Event einfach keine Zufällige Route einbauen, sondern eine vorgegebene, das ist wesentlich unanfälliger für Fehler.
Sobald der Weg nicht mehr eindeutig bestimmt ist, brauchst du ein Pathfinder-Algorhytmus. Es gibt Ruby-Skripte dafür, die ich einem Nicht-Experten nicht empfehlen würde.
Ab Besten machst du es so, wie Is-No-Good geschrieben hat. Du solltest bei solchen Unterfangen auch sicherstellen, dass das Spiel dabei nicht hängen bleibt, wenn die Bewegung zu keinem Ziel führt. Beispielsweise nach 10 sek die Kollisionserkennung für das Event ausschalten, also auf through stellen.
Für die Bewegung kannst du allerdings dieses Skript hier oberhalb der main-Seite reinpacken. Dann brauchst du im Movebefehl nur eine Skriptzeile mit:
Code:
move_toward(1, 2)
, wobei 1 und 2 die Variablen mit den Ziel-Koordinaten sind. Sparst also diverse Abfragen und 2 Variablen.
Code:
class Game_Character #-------------------------------------------------------------------------- # * Move toward position #-------------------------------------------------------------------------- def move_toward(x, y) # Get difference sx = @x - $game_variables[x] sy = @y - $game_variables[y] # If coordinates are equal if sx == 0 and sy == 0 return end # Get absolute value of difference abs_sx = sx.abs abs_sy = sy.abs # If horizontal and vertical distances are equal if abs_sx == abs_sy # Increase one of them randomly by 1 rand(2) == 0 ? abs_sx += 1 : abs_sy += 1 end # If horizontal distance is longer if abs_sx > abs_sy # Move towards position, prioritize left and right directions sx > 0 ? (return false if move_left) : (return false if move_right) if sy != 0#not moving? and sy != 0 sy > 0 ? move_up : move_down end # If vertical distance is longer else # Move towards position, prioritize up and down directions sy > 0 ? (return false if move_up) : (return false if move_down) if sx != 0#not moving? and sx != 0 sx > 0 ? move_left : move_right end end end end
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.