ich suche ein Script für den RPG Maker XP, bei dem der Hintergrund automatisch scrollt, so dass das Gefühl entsteht, man befinde sich auf oder in einem fahrenden Objekt (z.B. in einem Zug) - ohne, dass der Held sich dabei bewegen muss.
Diese Option war im RPG Maker 2003 noch vorhanden, nun wurde sie gestrichen... Fragt mich nicht warum...
Nun, ich hatte da mal was in der Hand, hat aber wohl nicht mit meinen anderen Scripten funktioniert...
Guck mal auf rmxp.org nach "Parallex Panorama" oder so...
ui stimmt an sowas hab ich gar nicht gedacht^^
ersetz am besten zeile 8/9 durch folgendes
jetzt bei $speed bzw $v_speed die variablen nr angeben, die die geschwindigkeit speichern sollen.
wenn du jetzt den wert dieser variablen änderst, ändert sich auch die geschwindigkeit.
(wenn der wert der variablen 0 ist, bewegt sich das panorama nur wenn man läuft - also so wies normalerweise ist)
Es ist erschreckend erstaunlich wie einfach das Problem gelöst werden kann. Jetzt muss aber noch mal jemand erklären, warum das eigentlich funktioniert bzw. wieso das Panorama nahtlos an sich selber gehängt wird und nicht nur ein Sprite ziellos über den Bildschirm schwebt. Mit welchen Scripten könnte das denn theoretisch Probleme geben, sorata08 hat ja so was angesprochen?
Weil es ein Plane ist und kein Sprites. Planes sind wie Tapeten, sie wiederholen ihr enthaltenes Muster immer. Bewegt man die Ursprungskoordinaten eines Planes, bewegt man das Muster.
Ich würde aber trotzdem keine globalen Variablen verwenden, sondern Instanzvariablen der Klasse Game_Screen Aber das ist wohl Geschmackssache.
Habs nicht ausprobiert, aber müsste es dadurch das man Graphics.frame_count mit einer Zahl multipliziert mit der Zeit nicht immer schneller werden? Denn Graphics.frame_count wächst ja ständig, je mehr Zeit vergeht.
Also so zB (hab den Inhalt mal dazugeschrieben):
@panorama.ox += Graphics.frame_count (500) * 2
sind gleich @panorama.ox += 1000
nach einiger Zeit aber:
@panorama.ox += Graphics.frame_count (10000) * 2
sind gleich @panorama.ox += 20000
ne weil beim normalen update der ox/y wert immer wieder auf die normale position zurück gesetzt wird.
heißt der vorher dazu addierte wert wird wieder gelöscht.
wenn man zb nur um 10 erhöht und nicht um einen steigenden wert wie frames, so bleibt die position gleich.
nur halt um 10 weiter nach links/rechts (ka^^) als er normalerweise sein würde.
Das sollte doch auch funktionieren, oder??
Ich habe es nicht getestet, also kann danach eine Fehlermeldung kommen.
Beutrteilt mal mein erstes verbessertes Script...
@Shining Advances
Ah, ok, muss ich mal unbedingt ausprobieren.
btw: ist Graphics.frame_count eigentlich unendlich? Irgendwann hört die Zahl doch auch auf zu zählen oder? Würde ja bedeuten das sich dann nach einer bestimmten Spielzeit das Pano nicht mehr bewegt.
@Adrian2000
Uh, das sieht nach einer Verschlimmverbesserung aus. Eine if Abfrage ohne Klasse, ohne gar nichts? Müsste eigentlich sofort zum Absturz führen, selbst wenn nicht, verstehe ich nicht was der Zweck dieser Abfrage ist. Ist doch schon am bequemsten X/Y über Game Variablen zu steuern so wie es Shining Advances schon gepostet hat.
@Adrian2000
So geht das leider nicht. Die Abfrage gehört direkt in die Methode und globale Variablen bräuchtest du auch nicht mehr. Allerdings ist wie Ascare schon gesagt hat die Methode von Shining Advances sowieso besser.
@Shining Advances
Ah, ok, muss ich mal unbedingt ausprobieren.
btw: ist Graphics.frame_count eigentlich unendlich? Irgendwann hört die Zahl doch auch auf zu zählen oder? Würde ja bedeuten das sich dann nach einer bestimmten Spielzeit das Pano nicht mehr bewegt.
...
wenn ich mich nicht irre isses unendlich.
wird jedesmal wenn Graphics.update aufgerufen wird um 1 erhöht.
glaube nicht, dass es irgendwann aufhört zu zählen, weil damit auch die spielzeit ausgerechnet wird (siehe Window_PlayTime).
wäre recht unsinnig die spielzeit irgendwann nicht mehr weiter zählen zu lassen
edit:
ich würde bei den anderen vorschlägen das > 0 durch ein != 0 ersetzen damit man das ganze auch per negative werte in die andere richtung bewegen kann
Geändert von Shining Advances (12.12.2008 um 18:35 Uhr)
Es ist erschreckend erstaunlich wie einfach das Problem gelöst werden kann. Jetzt muss aber noch mal jemand erklären, warum das eigentlich funktioniert bzw. wieso das Panorama nahtlos an sich selber gehängt wird und nicht nur ein Sprite ziellos über den Bildschirm schwebt. Mit welchen Scripten könnte das denn theoretisch Probleme geben, sorata08 hat ja so was angesprochen?
...
Ich hatte nur festgestellt, dass es bei mir nicht funktionierte, da mein KS wohl schon irgendwie auf die Scene Map zugreift...Oo anders habe ich es noch nicht ausprobiert...
Das Skript hat noch ein kleines Problem. Da du das Panorama immer vom Mittelpunkt aus verschiebst, und nicht von der letzten Position, bemerkt man Änderungen in der Geschwindigkeit, nicht als eben solcher, sondern als Ruckhafte veränderung der Position.
--
Geändert von The_Burrito (13.12.2008 um 09:09 Uhr)
dann muss ich wohl leider nochmal Ruby lernen...
Oder etwas weiter lernen^^
Aber abgesehen dafon, dass ich die Class vergessen habe, war es doch in Odrnung, oder??
@Shining Advances
Super, klappt. Werde es vielleicht in meinem Projekt verwenden, auch wenn ich vielleicht keine scrollenden Panos habe, mal sehen.
@Adrian2000
Nö, meiner Meinung nach irgendwie nicht. So wie es Shining Advances jetzt gepostet hat, so ist es in Ordnung. Schön die Methoden aliased usw.