Maniac Mansion Mania Forum

MMM-Werkzeugkiste => Technik => Thema gestartet von: nakobi am 11. Juli 2008, 20:00:43

Titel: Überblend-Effekt
Beitrag von: nakobi am 11. Juli 2008, 20:00:43
Ich habe schon einige Threads gefunden (inbesondere auf AT), aber leider nicht das was ich suche. Da ich es nicht Objekte suche sondern für Räume - die Rede ist von Überblendungen.

Ich will quasi einen Blendeffekt machen zwischen zwei Räumen (ähnlich MD-folge 12 mit den eingeblendeten "räumen (insel, tür etc.)".

Titel: Re: Überblend Effekt
Beitrag von: fireorange am 11. Juli 2008, 20:04:55
Es gibt verschiedene vorgegebene Überblend-Effekte, die unter General Settings für das ganze Spiel eingestellt werden können (Room Transition Style).

Der Befehl "SetScreenTransition(X);" kann für einzelne Szenen genommen werden.
Titel: Re: Überblend Effekt
Beitrag von: KhrisMUC am 11. Juli 2008, 22:03:00
Genau, oder SetNextScreenTransition().
nakobi, Du suchst die Einstellung "crossfade".
Entweder im Editor festlegen, oder in game_start:
  SetScreenTransition(eTransitionCrossfade);
Titel: Re: Überblend-Effekt
Beitrag von: nakobi am 12. Juli 2008, 00:10:03
Super, nur wie stell ich die geschwindkeit fest? Das Fading soll laaaaaaaaaangsaaaaaaaaaam sein :-)
Titel: Re: Überblend-Effekt
Beitrag von: KhrisMUC am 12. Juli 2008, 08:16:33
Gar nicht. Wenn Du es wirklich langsam haben willst (warum auch immer, ist doch nervig), musst Du den Effekt manuell coden.
Beim verlassen des Raums einen screen shot in ein DynamicSprite packen, in before fadein das Sprite als Hintergrund eines bildschirmfüllenden GUIs setzen, in after fadein das GUI transparent werden lassen.
// global header

import function fade_in();

// global script

DynamicSprite bg;

function on_event (EventType event, int data) {
  if (event == eEventLeaveRoom) {
    bg = DynamicSprite.CreateFromScreenShot();
    gFade.Transparency = 100;
    gFade.BackgroundGraphic = bg.Graphic;
    gFade.Visible = true;
  }
  if (event == eEventEnterRoomBeforeFadein) {
    gFade.Transparency = 0;
  }
}

function fade_in() {
  int t = 0;
  while(t<=100) {
    gFade.Transparency = t;
    t++;
    Wait(1);    // erhöhen, um es langsamer zu machen
  }
}
// after fadein in jedem Raum

fade_in();
Titel: Re: Überblend-Effekt
Beitrag von: nakobi am 12. Juli 2008, 14:25:42
vielen Dank! Ich brauch den Effekt nur bei einer entscheidenen Szene - danach soll das normale Fading funktionieren - insofern Danke!