Ergebnis 1 bis 10 von 10

Thema: Fließender Übergang

  1. #1

    Doktor von Stein Gast

    Fließender Übergang

    Ich möchte in meinem projekt einen halbwegs fließenden übergang vom titelbild auf die erste map machen.
    Im Scene_title/def command_new_game habe ich
    Code:
    Audio.bgm_stop
    in
    Code:
    Audio.bgm_fade(5000)
    umgeändert.
    ich würde jetzt gerne einen fließenden übergang erstellen, also das der ganze bildschirm sich langsam verdunkelt, bzw. fließend zur ersten map übergeht. alle meine versuche mit [opacity -= 1] haben bisher nix gebracht. es würde schon reichen, wenn es sich nur verdunkelt, weil die erste map sowieso schwarz ist. kann mir irgendjemand erklären wie ich das hinkriege?

  2. #2
    Mit Graphics.freeze frierst du den Bildschirm ein. Danach werden keine Veränderungen mehr angezeigt.
    Mit Graphics.transition wird der aktualisierte Bildschirm über den eingefrorenen drübergeblendet. Dies sollte dann den fließenden Übergang ergeben, den du suchst. Als optionale Parameter kannst du die Dauer des Übergangs, sowie den Dateinamen eines Transitionbildes angeben.

    Eigentlich sollte das aber schon standardmäßig gemacht werden, wenn man vom Titelbildschirm zur Map wechselt.

  3. #3

    Doktor von Stein Gast
    ja, es is nur halt zu kurz ...
    danke, mal sehen obs klappt.

  4. #4
    Dann gibst du per Parameter 'ne längere Zeitdauer an, z.B.
    Code:
    Graphics.transition(100)
    Was 2,5 Sekunden entsprechen würde.

  5. #5
    Hi,

    Habe auch ne Frage bezüglich dem Titlescreen. Dachte ich nehme diesen thread, da er passend zum Thema ist =)

    Ich möchte nämlich, dass der Titelbildschirm gezeigt wird, aber ohne das Auswahlfenster gleich am Anfang.
    Erst ca. 3. Sekunden später sollte das Fenster gezeigt werden.
    Ich denk, ich muss einen wait Befehl einfügen. Nur wo?

    Kann jemand helfen?

    Danke vielmals.

  6. #6
    Wenn der Titelbildschirm nicht animiert ist, reicht dafür eigentlich ein
    Code (ruby):
    ZEIT_IN_FRAMES.times do
      Graphics.update
    end
    in der Scene_Title, bevor das Auswahlfenster erstellt/angezeigt wird.

    Geändert von Cepanks (16.04.2010 um 22:22 Uhr)

  7. #7
    ansonston könntest du auch ein Fenster außerhalb des Bildschrims anzeigen lassen und dann in Main es so lange verschieben lassen, bis es zB. 800 hat.
    also:
    PHP-Code:
    def main
     windowhmhmhm
    .640
    end 
    PHP-Code:
    def update
     
    if windowhmhmhm.800
      windowhmhmhm
    .+= # Wert kannst du anpassen
     
    end
    end 
    Ob der Code funzt, kA, kannst du selber probieren. Du musst allerdings erstmal ein Fenster erstellen. Schau dir aber dazu einfach, wie die anderen Fenster erstellt werden. Rein Theroretisch sollte es klappen, egal, ob du den animierten hast oder net.

  8. #8
    Zitat Zitat von salamimild Beitrag anzeigen
    Ich möchte nämlich, dass der Titelbildschirm gezeigt wird, aber ohne das Auswahlfenster gleich am Anfang.
    Erst ca. 3. Sekunden später sollte das Fenster gezeigt werden.
    Ich denk, ich muss einen wait Befehl einfügen. Nur wo?
    Kann jemand helfen?
    Danke vielmals.
    So, da ich Neuling bin was RGSS angeht musste ich ne weile mit freeze und transition rumspielen, aber folgendermaßen kannst du damit den gewünschten Effekt erzielen (Ich beziehe mich auf ein noch nicht verändertes Script was Zeilenangaben betrifft):

    Gehe im Ruby-Editor im RMXP in die Scene_Title
    Und gehe dort zu Zeile 36, du solltest dort folgenden Code vorfinden:
    PHP-Code:
    # Make command window
        
    s1 "Neues Spiel"
        
    s2 "Fortsetzen"
        
    s3 "Beenden"
        
    @command_window Window_Command.new(192, [s1s2s3])
        @
    command_window.back_opacity 160
        
    @command_window.320 - @command_window.width 2
        
    @command_window.288 
    Das ist der Punkt an dem das Auswahlfenster erzeugt wird (Darunter befinden sich noch einige Abfragen die ermitteln ob bereits ein Spielstand vorhanden ist und somit Continue, bzw Fortsetzen auswählbar ist), die Warte funktion sollte also davor stattfinden, füge also über "#Make Command Window" folgendes ein:
    PHP-Code:
        Graphics.transition()
        
    Graphics.freeze
        Graphics
    .transition(50)
        
    # Make command window 
    Das erste Graphics.transition() sorgt dafür, dass die Hintergrundgrafik schon vor dem Fenster eingeblendet wird.
    Graphics.freeze sorgt dafür dass der aktuelle Bildschirm eingefroren wird.
    Graphics.transition(50) habe ich dann lediglich als eine art "Pseudo"-Waitfunktion genutzt, da ich noch keinen explitizen Wait-Befehl für Ruby kenne. Mit der Zahl in Klammern kannst du die Wartezeit bis das Fenster dann schließlich geladen wird, anpassen.
    Sicherlich gibts wohl elegantere Methoden, aber es hat den gewünschten Effekt, das Auswahlfenster wird erst später eingeblendet, dir wird allerdings auffallen, dass auch die Hintergrundmusik erst mit dem Auswahlfenster eingeblendet wird, wenn du die BGM aber schon vorher abspielen möchtest musst du nur eine Zeile ausschneiden und woanders einfügen.
    Gehe zu Zeile ( jetzt: ) 65:
    PHP-Code:
    $game_system.bgm_play($data_system.title_bgm
    Diese spielt die BGM ab, schneide sie aus und füge sie hier ein:
    PHP-Code:
        Graphics.transition()
        
    # Play title BGM
        
    $game_system.bgm_play($data_system.title_bgm)
        
    Graphics.freeze
        Graphics
    .transition(50)
        
    # Make command window 
    Somit wird die BGM direkt nach einblenden des Hintergrundbilds abgespielt.

    Eine weitere Anmerkung, du kannst auch, anstatt dass das Auswahlfenster einfach nur sofort eingeblendet wird, natürlich auch da einen weichen Übergang erzeugen.
    Dazu füge einfach hinter Graphics.transition(50) noch eine Graphics.freeze ein, und füge nachdem die Textbox erstellt wurde eine neue Graphics.transition(x) ein (wobei x für einen beliebigen Wert steht und die Übergangsdauer beeinflusst)
    Das sieht dann hier jetzt so aus:
    PHP-Code:
        Graphics.transition()
        
    # Play title BGM
        
    $game_system.bgm_play($data_system.title_bgm)
        
    Graphics.freeze
        Graphics
    .transition(50)
        
    Graphics.freeze
        
    # Make command window 
    Und ein stückchen weiter unten, anchdem das Auswahlfenster erstellt (aber noch nciht angezeigt) wurde, so (ca. Zeile 69) :
    PHP-Code:
    # Execute transition
        
    Graphics.transition(50
    Alles natürlich direkt getestet und es klappt.
    Bei der Gelegenheit möchte ich mich für die Idee bedanken, wäre auf so ein, naja nennen wir es mal Feature, gar nicht gekommen und werde es wahrscheinlich in für meine Zwecke angepasster Form selbst verwenden

    Hier nochmal der Code wie er bei mir nun steht im ganzen:

    Geändert von XGazudin (17.04.2010 um 19:03 Uhr)

  9. #9
    @XGazudin

    Yeah. Das läuft einwandfrei und ist genau das, was ich wollte. Sogar mit dem Einblenden des Fenster.
    Coole Sau

    Danke vielmals!!!!

  10. #10
    Es funktioniert zwar, ist aber wenig elegant, wie ich es mir schon gedacht habe.
    Ich habe mal Cepanks methode probiert und es funktioniert auch:
    Zitat Zitat von Cepanks Beitrag anzeigen
    Wenn der Titelbildschirm nicht animiert ist, reicht dafür eigentlich ein
    Code (ruby):
    ZEIT_IN_FRAMES.times do
      Graphics.update
    end
    in der Scene_Title, bevor das Auswahlfenster erstellt/angezeigt wird.
    Anstatt ZEIT_IN_FRAMES musst du an dieser stelle halt eben eine Zahl angeben, also für 3 Sekunden = 3*40 = 120
    Das könnte dann so aussehen:
    PHP-Code:
        Graphics.transition()
        
    # Play title BGM
        
    $game_system.bgm_play($data_system.title_bgm)
        
    120.times do
          
    Graphics.update
        end
        
    # Make command window 
    Selbes ergebnis, weniger umständlich (wie ich finde...).
    Wollts hier nur nochmal erwähnt haben dass Cepanks Methode auch funktioniert.

Berechtigungen

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