ShortCutScene



So schön wie es ist, mit dem CutScene-Code von nevermind zu arbeiten, manchmal ist es mir einfach zuviel Code, wenn ich nur eine kurze Zwischensequenz als CutScene erzeugen möchte. Z.B., wenn ich dem Spieler eine bestimmte Stelle auf der Karte zeigen, dabei nicht die starre Kameraführung einer Briefingseite verwenden möchte und keinen Text einblenden muss.

Danke aber trotzdem an dieser Stelle an nevermind. ;-)

Ich verwende hierzu folgende Zeile

CallShortCutScene(_startpos,_zoomdistance,_angle,_zoomangle,_backup)


Die ersten 4 Parameter sollten von den CutScenes her bekannt sein. Der Parameter _backup wird als „true“ oder „false“ gesetzt. Bei „true“ wird die (Kamera)Ausgangsposition gespeichert und nach dem Ende der CutScene wieder aufgerufen. Mit „false“ bleibt die Kamera am Ende bei der CutScene-Position stehen.

Die CutScene kann durch Drücken von „Esc“ abgebrochen werden.


Folgender Code ist hierfür ins Script (nicht in die FMA) zu kopieren:

function CallShortCutScene(_startpos,_zoomdistance,_angle,_zoomangle,_backup)
  Interface_SetCinematicMode(1)
  Display.SetRenderFogOfWar(1)
  Camera.StopCameraFlight()
  Display.SetRenderSky(1)	
   assert(type(_startpos)=="string","Du musst den Namen der Entity als String mit \"  \" eingeben")
  Camera.FollowEntity(GetEntityId(_startpos))
   assert(type(_zoomdistance)=="number","Du musst fuer _zoomdistance eine Zahl eingeben")
  Camera.ZoomSetDistance(_zoomdistance)
   assert(type(_angle)=="number","Du musst fuer _angle eine Zahl eingeben")
  Camera.RotSetAngle(_angle)
   assert(type(_zoomangle)=="number","Du musst fuer _zoomangle eine Zahl eingeben")
  Camera.ZoomSetAngle(_zoomangle)
   assert(type(_backup)=="boolean","Du musst fuer_backup true oder false eingeben")
    if _backup then
      MapLocal_CameraPositionBackup()          --speichert die Ausgangsposition der Kamera
      backup_cs = 1
    end
    EscapeOrig = GameCallback_Escape
    GameCallback_Escape = function() EscapeOrig() ShortCutsceneRecallOrig()end
end



Mit dem Aufruf der Zeile

ShortCutsceneRecallOrig()

wird die ShortCutScene wieder beendet. Diese kann z.B. innerhalb eines Callbacks, einer Schleife oder ähnlichem aufgerufen werden.

Hierfür muss folgender Code ebenfalls ins Script kopiert werden:

function ShortCutsceneRecallOrig()
  Interface_SetCinematicMode(0)
  Display.SetRenderSky(0)
  Display.SetRenderFogOfWar(0)
  Camera.FollowEntity(0)
   if backup_cs == 1 then
     MapLocal_CameraPositionRestore()     --geht zur Ausgangsposition von wo aus ShortCutscene aufgerufen wurde zurück
     backup_cs = nil
   end
   GameCallback_Escape = EscapeOrig
end



Hier mal eine kleine Beispiel-Map: bsp_shortcutscene.rar

zurück zu: Nützliche Funktionen