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