Ich hab für den Game Jam den RPG Maker XP ausgegraben, hab schon ein bisschen in der Skriptdatenbank rumgeschrieben und mir einen groben Überblick verschafft was der Maker auf die Klickibunti-Art kann und was eher nicht und hab mal eine Frage zu einer bestimmten Sache, die scheinbar immer noch nicht auf herkömmlichen Weg möglich ist.
Die Idee, die ich umsetzen will: Ich habe ein Spiel in der Seitenansicht und möchte en Feature bauen, mit dem ich die Räume rotieren lassen kann, um zum Beispiel 90 Grad. das wäre in dem Fall einfach nur ein viereckiger Raum als Panorama, dessen Eingang dann einfach nach unten zeigen soll, statt nach rechts und so Späße. Teleporter und Objekte umplatzieren ist nicht das Ding, das bekomme ich noch hin, ABER
Das Problem: Rotationen von Pictures sind ja möglich aber nicht um eine bestimmte Gradzahl. Stellt sich mir also die Frage, ob es dafür mittlerweile Skripte gibt, und ob es auch möglich ist Panoramen rotieren zu lassen, ohne dass ich mir dafür ne eigene Animation basteln muss um die Rotation quasi zu simulieren.
Beim ersten Blick in google ist mir dafür spontan nichts entgegengesprungen.
Das ist sehr wohl möglich.
Alle Grafiken im RMXP (mit Ausnahme der Tilemap) sind Sprites. Alle Sprites besitzen ein Attribut um die Rotation zu bestimmen. Dieses Attribut kann auf einen beliebigen Zahlenwert gesetzt werden und bestimmt dann die Rotation in Grad des Sprites.
Wie du dieses Wissen nun genau für die Panoramen verwenden kannst kann ich dir nicht frei aus dem Kopf sagen. Wenn sich bis später noch niemand anderes dazu gemeldet hat kann ich es bis zum Abend nachschlagen und dann später ergänzen.
Alternativ könntest du auch einfach ein eigenes System als CustomScript schreiben.
Hm, ja, das klingt schonmal nicht so schlecht. Weißt du zufällig aus dem Stand in welchem Skript im XP das Panorama und die Werte eingetragen werden? Mit einem zusätzlichen Skript müsste es ja möglich sein, die einmalig zu manipulieren und zu überschreiben - irgendwie. Ansonsten begeb ich mich mal auf die Suche.
Was du suchst, ist Sprite#angle. Das funktioniert aber gerade nicht für Panoramen, weil die keine Sprites sondern Planes sind (die Grafik wird automatisch in x- und y-Richtung gekachelt) und Planes kann man nicht rotieren.
Wahrscheinlich kann man die Panoramen recht leicht auf Sprites umschreiben, deine Räume müssen sich ja nicht wiederholen, oder? Eine andere Alternative, wenn du wirklich nur 90-Grad-Rotationen hast: Erstelle jeden Hintergrund für alle vier Varianten und wenn der Raum rotiert, wird das Panorama unsichtbar geschaltet und getauscht während ein Dummy-Sprite angezeigt wird, der eben entsprechend rotiert. Schau dir mal Game_Map und Spriteset_Map. Wenn ich mich nicht irre, sollte da alles drin sein, was mit Panoramen zu tun hat.
Konstante Sprite-Rotation im Maker ist übrigens arschlangsam, gerade wenn du vorhast 640x480 oder größer zu bewegen. Als Alternative könnte man zur Animation Sprite#zoom_x und Sprite#zoom_y nutzen und den Raum "zusammenschieben", einmalig den Winkel ändern, und ihn wieder "auseinanderfalten".
--
"Banjo, you're a BEAR... and I will teach you... THESE MOVES!"
Okay, das hat sehr viel länger gedauert als ich ursprünglich dachte.
Was Cepanks schreibt ist richtig, ich hatte mich vorher vertan. Panoramas können tatsächlich nicht direkt per Code rotiert werden.
Pictures allerdings schon.
Was du tun könntest wäre ein ganz kleines Script zu schreiben, welches dir erlaubt die Pictures auf der Map einfacher zu rotieren. Alternativ, wenn man sich etwas mehr Arbeit machen möchte, kann man auch ein Script schreiben welches direkt Sprites erstellt und passend rotiert, allerdings wird das im RMXP nicht ganz so einfach. Der Grund dafür ist die Art und Weise wie die Spriteset_Map Klasse aufgebaut ist und benutzt wird. Du müsstest an verschiedenen Stellen kleine Änderungen an den Klassen vornehmen um Zugriff auf die passenden Variablen zu erhalten. Sehr Fehleranfällig wenn man nicht genau weis was man tut.
Hier wäre ein kleines bisschen Code, welches erlaubt die Pictures direkt zu rotieren (sofort auf einen Winkel setzen)
In einem Event könntest du zum Beispiel folgendes schreiben:
Setzt die Rotation des Pictures mit ID 1 auf 90 Grad. (Die obere Kante zeigt nun nach links)
Setzt die Position des Pictures mit ID 3 auf die Koordinate (128, 160).
Ein Problem beim Rotieren ist es um welchen Punk herum du rotierst. Standardmäßig rotiert der Maker um die linke obere Ecke. Wenn du aber bei der Option "origin" beim showPicture-Befehl "center" auswählst, dann wird um die Mitte herum rotiert. Das kann dir die Arbeit um ein vielfaches erleichtern.
Ich hoffe das hilft ein wenig weiter, auch wenn es keine fertige Lösung ist.
Danke Cornix! Wenn das was ich machen möchte, funktioniert, liebäugle ich wohl mal damit, etwas mehr mit dem XP zu arbeiten. Er hat zwar wohl doch noch ein paar weiße Flecken, aber bisher ist er doch nicht weniger händisch als der RPG Maker 2000.