Ergebnis 1 bis 20 von 20

Thema: [RMXP] Laufen-Script

  1. #1

    [RMXP] Laufen-Script

    Hallo,

    Ich suche ein Laufen-Script für den RPG Maker XP, bei welchem sich die Animation ändern lässt. Am besten fände ich es, wenn das Laufen per Switch aktiviert und deaktiviert werden kann.
    Irgendwie kriege ich es per Common Events einfach nicht selbst. Wenn ich es selbst versuche wird es unglaublich kompliziert.

    Eigentlich sollte es ja einfach sein so etwas per Google-Eingabe zu finden, allerdings tauchen (zumindest bei mir?) übermächtig viele Ergebnisse vom RPG Maker VX auf und unbrauchbare Ergebnisse für den RPG Maker XP.

  2. #2
    Das dürfte es so ziemlich sein, was du willst. Musst nur noch den Switch ($game_switches[555]) anpassen.

    Code:
    #--------------------------------------------------------------------------
    # ** Dash Switch
    #--------------------------------------------------------------------------
    #  [ 2015 01 12 ] rv1
    #  Requested by Stray
    #  Created by Akira
    #--------------------------------------------------------------------------
    #  Contains edited update_move code from standard Game_Character
    #--------------------------------------------------------------------------
    
    class Game_Character
      #--------------------------------------------------------------------------
      # * Dash
      #--------------------------------------------------------------------------
      def dash?
        return false
      end
      #--------------------------------------------------------------------------
      # * Update frame (move)
      #--------------------------------------------------------------------------
      def update_move
        distance = 2 ** @move_speed
        distance *= 2 if dash?
        if @y * 128 > @real_y
          @real_y = [@real_y + distance, @y * 128].min
        end
        if @x * 128 < @real_x
          @real_x = [@real_x - distance, @x * 128].max
        end
        if @x * 128 > @real_x
          @real_x = [@real_x + distance, @x * 128].min
        end
        if @y * 128 < @real_y
          @real_y = [@real_y - distance, @y * 128].max
        end
        if @walk_anime
          @anime_count += 1.5
        elsif @step_anime
          @anime_count += 1
        end
      end
    end
    
    class Game_Player
      #--------------------------------------------------------------------------
      # * Dash
      #--------------------------------------------------------------------------
      def dash?
        # Get switch while non-forced moving
        if !@move_route_forcing && $game_switches[555] && moving?
          # Player is dashing
          return true
        end
        # Player is walking or idling
        return false
      end
    end

    Geändert von MagicMaker (12.01.2015 um 19:37 Uhr)

  3. #3

  4. #4
    Noch eine Frage: Kann ich im Script irgendwie die Grafik austauschen? Diese sollte aber nur während dem Laufen selbst angezeigt werden. Während dem Stand sollte sie wieder zur normalen Grafik wechseln.

    Geändert von Stray (22.03.2015 um 23:41 Uhr)

  5. #5
    Falls für das lahme Mistding von Engine ein parallel laufender Eventprozess nicht schon zuviel ist:
    Code:
    <> Loop
     <> If Switch[0555] == ON
      <> Change Graphic: (Rennen)
      <> Loop
       <> If Switch[0555] == OFF
        <> Change Graphic: (Normal)
        <> Break Loop
        <>
       : END IF
       <> Wait: 1 Frame
       <>
      : END LOOP
      <>
     : END IF
     <> Wait: 1 Frame
     <>
    : END LOOP
    <>

  6. #6
    Danke, aber selbst, wenn es nicht zu viel wäre (was es in meinem Fall sicher sein wird) würde der Held dann doch beim Gegen-Die-Wand-Laufen den Laufsprite anzeigen, oder? Bei mir bilden nämlich alle 4 Sprites in der Lauf-Animation eine durchgehende Bewegung.

  7. #7
    Zitat Zitat
    würde der Held dann doch beim Gegen-Die-Wand-Laufen den Laufsprite anzeigen, oder?
    Ich versteh nicht wirklich, warum der das sollte. òo

  8. #8
    Ach, ich habe es falsch formuliert. Es geht eigentlich um das Stehenbleiben, wenn das Laufen aktiviert ist.

    Mein Charakter bewegt besitzt eine Gehen-Animation, die ganz dem Standard entspricht.
    Sie sieht in der Abfolge so aus:
    Stand - Schritt - Stand - Schritt

    Die Laufen-Animation besteht hingegen aus 4 Bildern, die allesamt das Laufen in einer durchgehenden Bewegung ohne Stand zeigen:
    Schritt - Schritt - Schritt - Schritt

    Ist das Laufen ausgeschaltet ist alles wunderbar - schaltet man das Laufen aber ein und bewegt sich gar nicht, sieht man automatisch den Sprite der Laufanimation. Und es sollte solange man sich nicht bewegt eigentlich beim Gehen-Charset bleiben.

    Außerdem habe ich gerade ganz überrascht gemerkt, dass das Script ja gar nicht die Bewegungs-"stufen" an sich beeinflusst sondern scheinbar die Geschwindkeit irgendwie multipliziert?

    Mein Problem ist gerade, dass meine Laufgeschwindigkeit im Gehen auf Stufe 3 eingestellt ist, die Laufgeschwindigkeit eine Stufe höher, also 4 ist. Egal wie ich die Zahlen ändere, ich komme zu keinem guten Ergebnis. Die Laufgeschwindigkeit der anderen Events wird meistens sogar auch verändert. :/
    Desweiteren ist meine Framerate nicht auf 40 sondern auf 60 eingestellt, weswegen der Held sich jetzt im Laufen viel zu schnell bewegt.

  9. #9
    3, also "Slow", beim Gehen? Mir ist eigentlich schon "Fast" zu langsam (ok, bei 60 FPS ist "Slow" natürlich schon etwas schneller). Aber eigentlich kommst du ja nicht darum herum, dass die Figur beim Rennen eine Stufe schneller ist und das wird bei 60 FPS wohl wirklich schon zu schnell sein.

    Geht es dir eigentlich um eine Rennfunktion (von der würde ich sowieso abraten) oder nur um die Optik?

  10. #10
    Es geht eigentlich schon um die Rennfunktion um später schleichen zu können oder vorsichtig an Engpässen vorbei gehen zu können oder ähnliches.

    Mir fällt gerade auf, Fast ist tatsächlich ziemlich schnell. Könnte man denn die allgemeine Geschwindigkeit für "Fast" auch ändern?

    Geändert von Stray (23.03.2015 um 16:13 Uhr)

  11. #11
    Die Lauftempostufen existieren genau so wie sie sind, weil sich Events auf einem Raster bewegen.

    Ein Charakter könnte sich bei 32x32 jetzt zB 2px pro Frame bewegen und wäre in 16 Frames am Ziel.
    Oder mit 4px, was 8 Frames dauert. 3px oder Zwischenwerte (außer 3,2) würden nach einer bestimmten
    Zeit keine genaue Position ergeben, sondern dafür sorgen, dass je nachdem wie das denn in der Engine
    gelöst wurde, sich die Grafik des Objektes, das schon seit Beginn der Bewegung auf dem Feld steht,
    nachträglich zurückhackt, beim Erreichen/Übertreten des Feldes weniger vorangeschreiten kann, also
    kurz langsamer wird und damit ebenfalls sichtbar herumhackt oder über die Grenzen laufen und auf alle
    Ewigkeit weiterwatscheln, ohne den Feldschritt abzuschließen, zumindest bis nach einer dreiviertel
    Unendlichkeit an verflogener Zeit der Wert überläuft und das Programm abstürzt oder von der anderen
    Seite wieder in den Bildschirm gelaufen kommt, als hätte das Event gerade den Äquator umrundet.

  12. #12
    Ich verstehe nicht ganz worauf du hinaus willst. Hieße das jetzt, dass es sich nicht lohnen würde die Geschwindigkeit zu ändern, weil es so oder so zu schnell oder zu langsam wäre?

    Mit wie vielen Pixeln pro Frame bewegen sich denn Events überhaupt in den verschiedenen Geschwindigkeitseinstellungen?

  13. #13
    Die Figuren bewegen sich ja nicht pixelweise, sondern sie springen glaube ich jeweils immer ein halbes Tile weiter. Das Bewegungstempo ist jedenfalls:

    Slowest - Wait 32
    Slower - Wait 16
    Slow - Wait 8
    Fast - Wait 4
    Faster - Wait 2
    Fastest - Wait 1

    Der Maker sagt Wait wird in Frames gemessen, kann aber sein, dass sie intern noch mal zwei genommen werden. Irgendetwas war da.

  14. #14
    Danke.
    Soweit ich dass für mich getestet habe ergeben die FPS - also im Standardfall 40 Frames - eine Sekunde.

    Jedenfalls müssten die Bewegungen ab "Fast" und aufwärts langsamer sein. :ll

    Geändert von Stray (24.03.2015 um 01:12 Uhr)

  15. #15
    Ja, FPS steht für Frames Per Second. Bei 60 FPS hast du dann 60 Frames pro Sekunde, was dazu führt, dass alle Bewegungen und Animationen viel schneller abgespielt werden. Das sieht auch schon bei Battle Animations nicht mehr so toll aus, da müsste man einige doppelte Frames einbauen, damit man überhaupt noch was sieht. Ich überlege aber selbst schon, ob ich meine Spiele auf 50 FPS setzen soll, weil dadurch "Fast" recht angenehm schnell ist.

  16. #16
    Also ich habe mit dem Script folgendes festgestellt:
    Der Held bewegt sich unabhängig von den FPS beim Laufen schneller als 5:Faster und langsamer als 6:Fastest, also etwas dazwischen. Eigentlich möchte ich ihn nur eine Laufstufe (oder im Idealfall eeetwas langsamer als eine volle Stufe) schneller haben. Geht das?

  17. #17
    Mit normalem Tile-Movement vermutlich nicht. Die Figur darf eben wirklich nicht außerhalb des Tile-Rasters landen.

  18. #18
    Was ist mit Pixelmovement-Scripts? Wie wird das Problem dort gelöst? Selbst bei diesen muss eine Bewegung doch früher oder später größer als 1 Pixel werden?

  19. #19
    Ja, aber dort spielen die Tiles ja quasi keine Rolle mehr.

    Ich würde auf das Renn-Script ganz verzichten. Stattdessen könntest du die Figur bei den Schleichpassagen auf Knopfdruck eher langsamer laufen lassen.

  20. #20
    Ich habe ein Renn-Skript implementiert, das den Spieler mit der Taste S rennen lässt.
    Im Detail kann man die Geschwindigkeit und Grafik für "Gehen" und "Rennen" im Skript anpassen, letztlich also nichts anderes als deine bisherige Lösung.
    Des Pudels Kern ist jedoch: Es wird nur auf die Renn-Grafik umgeschaltet, wenn der Spieler sich auch bewegt/bewegen kann.
    D.h. im Stillstand wird die Grafik und Geschwindigkeit nicht gewechselt und wenn man gegen ein unpassierbares Tile läuft, wird ebenfalls die Rennpose abgestellt.

    Wenn du Interesse daran hast, schreib mir ruhig eine PN, dann bereite ich dir das Skript nochmal etwas auf.

    MfG Sorata

Berechtigungen

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