Ergebnis 1 bis 20 von 20

Thema: Panorama soll automatisch scrollen

  1. #1

    Panorama soll automatisch scrollen

    Hallo zusammen,

    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...


    Vielen Dank

  2. #2
    Das fragen sich alle...^^"

    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...

  3. #3
    Code:
    $speed = 2
    $v_speed = 0
    
    class Spriteset_Map
      alias pano_update update
      def update
        pano_update
        @panorama.ox += Graphics.frame_count * $speed
        @panorama.oy += Graphics.frame_count * $v_speed
      end
    end
    hab mal schnell was gebastelt
    über main einfügen

    für $speed die waagrechte geschwindigkeit un für $v_speed die senkrechte eingeben.

  4. #4
    Zitat Zitat von Shining Advances Beitrag anzeigen
    Code:
    $speed = 2
    $v_speed = 0
    
    class Spriteset_Map
      alias pano_update update
      def update
        pano_update
        @panorama.ox += Graphics.frame_count * $speed
        @panorama.oy += Graphics.frame_count * $v_speed
      end
    end
    hab mal schnell was gebastelt
    über main einfügen

    für $speed die waagrechte geschwindigkeit un für $v_speed die senkrechte eingeben.
    Perfekt. Danke

    Ich werde dich auch in den Credits erwähnen

    Nur eine Sache wüsste ich noch gerne:

    Wenn das Panorama mal nicht scrollen soll bzw. schneller/langsamer - Wie genau richte ich das ein?

    Aufjedenfall schonmal Danke für die Hilfe

  5. #5
    ui stimmt an sowas hab ich gar nicht gedacht^^
    ersetz am besten zeile 8/9 durch folgendes
    Code:
    @panorama.ox += Graphics.frame_count * $game_variables[$speed]
    @panorama.oy += Graphics.frame_count * $game_variables[$v_speed]
    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)

  6. #6
    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?

  7. #7
    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.

  8. #8
    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

    oder mache ich gerade wieder einen Denkfehler? ^^

  9. #9
    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.

  10. #10
    PHP-Code:
    if $game_variables[5] > 1 then
    $speed 
    2
    $v_speed 
    0

    class Spriteset_Map
      alias pano_update update
      def update
        pano_update
        
    @panorama.ox += Graphics.frame_count $speed
        
    @panorama.oy += Graphics.frame_count $v_speed
      end
    end
    else
    $speed 0
    $v_speed 
    0

    class Spriteset_Map
      alias pano_update update
      def update
        pano_update
        
    @panorama.ox += Graphics.frame_count $speed
        
    @panorama.oy += Graphics.frame_count $v_speed
      end
    end
    end 
    Das sollte doch auch funktionieren, oder??
    Ich habe es nicht getestet, also kann danach eine Fehlermeldung kommen.
    Beutrteilt mal mein erstes verbessertes Script...

  11. #11
    @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.

  12. #12
    @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.

    Code:
    class Spriteset_Map 
      alias pano_update update 
      def update 
        pano_update 
        if $game_variables[5] > 1
          speed = 2
          v_speed = 0
        else
          speed = 0
          v_speed = 0
        end
        @panorama.ox += Graphics.frame_count * speed 
        @panorama.oy += Graphics.frame_count * v_speed 
      end 
    end

  13. #13
    Zitat Zitat von Ascare Beitrag anzeigen
    @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)

  14. #14
    Zitat Zitat von Kelven Beitrag anzeigen
    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...

  15. #15
    ich würds etwas anders machen. damit sich der speed noch anpassen lässt.

  16. #16
    Die If-Kontrollstruktur ist aber völlig überflüssig, weil man - s.o. - direkt die Variablen abfragen kann.

  17. #17
    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)

  18. #18
    stimmt :/
    hier ne verbesserte version

    1 bzw 2 bei game_variables umstellen auf die gewünschte variable

  19. #19
    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??

  20. #20
    @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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •