problem beim ein und ausfaden bei nem raumübergang

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • problem beim ein und ausfaden bei nem raumübergang

    folgendes szenario:

    -> 2 räume: einer "draußen" mit nem haus, einer das "innere" dieses hauses.
    -> eine "tür" in jedem dieser räume.
    -> ein spielerobjekt, dass beim kollisionseffekt mit einer der türen in den jeweils anderen raum wechselt.

    Folgendes problem: wenn ich diesen code benutze:

    GML-Quellcode

    1. x=320;
    2. y=160; // die position, wo das spielerobjekt nachher hin soll
    3. room_goto(room_playground2); //der neue raum


    dann habe ich sonen wiederlichen sprung, d.h. *zack* und alles sieht anders aus. dies wollte ich damit umgehen, dass ich den bildschirm ins schwarze überblenden lasse, raum und position wechsel, und wieder reinblende.

    ich hab also mal die suchfunktion benutzt, und das hier gefunden: Bildschirm Fade-out

    dann sieht mein code so aus:

    GML-Quellcode

    1. scr_fade(fadetime,true);
    2. x=320;
    3. y=160;
    4. room_goto(room_playground2);
    5. scr_fade(fadetime,false);


    fadetime ist ne konstante und scr_fade ist das script, das ich gefunden habe, nur dass ich das ein wenig modifiziert habe:

    GML-Quellcode

    1. // argument0 = zeit in frames
    2. // argument1 = true/false (true: von normal zu schwarz, false = von schwarz zu normal
    3. win_x=window_get_width();
    4. win_y=window_get_height();
    5. temp = sprite_create_from_screen(0,0,win_x,win_y,false,false,false,false,0,0)
    6. for (i = 0; i < argument0; i += 1)
    7. {
    8. draw_sprite(temp,0,0,0);
    9. draw_set_color(c_black);
    10. if (argument1 = true)
    11. draw_set_alpha(i/argument0);
    12. else
    13. draw_set_alpha(1-i/argument0);
    14. draw_rectangle(0,0,win_x,win_y,false);
    15. screen_refresh();
    16. sleep(1000/room_speed);
    17. }
    18. draw_sprite(temp,0,0,0);
    19. sprite_delete(temp);
    20. draw_set_alpha(1);
    Alles anzeigen


    also, dis richtet sich nach der fenstergröße, und setzt, nachdem alle bilder gelöscht wurden, alpha wieder auf 1 (da ich noch anderesachen zeichne, und diese dann weg wären.)

    so, ich hoffe dis waren genug angaben. jetzt sollte eigentlich alles funktionieren, aber was passiert ist folgendes:
    die alte landschaft wird ausgeblendet, die alte landschaft wird eingeblendet, und dann kommt trotzdem dieser wiederliche sprung.

    kann mir jemand helfen?
  • du hast leider ein programmiertechnichnisches problem. die befehle room_goto etc. wechseln bekanntlich den raum. das object, in dem dieser befehl ausgeführt wird, befindet sich aber in dem raum der verlassen wird. selbst wenn sich eine weitere instance dieses objectes in dem anderen raum befindet, wird die event-kette neu ausgeführt (denn es ist ein neuer raum).
    mir ist auchschon aufgefallen, das der GM selbständing den befehl room_goto zurückstellt, biss eventuell nachfolgenden code beednet hat. ist ja auch klar.

    zur lösung: du solltest einen code wie diesen verwenden um den raum zu wechseln:

    GML-Quellcode

    1. scr_fade(fadetime,true);
    2. room_goto(room_playground2);

    und im create-event deines players oder des controllobjectes einen ähnlichen code wie diesen verwenden:

    GML-Quellcode

    1. scr_fade(fadetime,false);

    du wirst aber weiterhin das problem haben, das einen frame lang der neue raum zwischen dem "fade" angezeigt wird, da der drawevent des neuen raumes noch nicht ausgeführt wird. um dies zu verhindern, müsstest du in jeden raum einen schwarzen "vordergund-background" einfügen (es reicht ein pixel, der wiederholt wird) und diesen per scr_fade ein- oder ausblenden. backgrounds sind nämlich unabhänging vom drawevent und werden schon beim entstehen des raumes angezeigt.

    ich hoffe das hilft :D
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • das ist wurst.
    es wird dennoch erst nach einen frame der draw-event ausgeführt, was dazu führt, das ausgefadet wird, ca. eine 30stel secunde dein raum gezeigt wird und dan eingefadet wird.
    Battle Command - WeltraumEchtzeitStrategie | Meine GM Spiele auf Box.net
    GCM/FA/O d-(--)@>---xpu s-:- !a C++$@ U- P L+ E W++ N o K-- w++ O? M V PS PE-- Y PGP t 5 X R+++ tv+ b DI D G e+ h? r-- x
  • Benutzer online 1

    1 Besucher