a mettre dans l'init.sqf
Code : Tout sélectionner
call compile preprocessFileLineNumbers "cam_functions.sqf";
Code : Tout sélectionner
/*##################################################################
Créer la caméra
FNCT_CamMakeCamera()
@param1 Position de départ de la camera
@return la camera créée
Ex : _cam = [ (getPos player) ] call FNCT_CamMakeCamera;
##################################################################*/
FNCT_CamMakeCamera ={
_pos = _this select 0;
enableRadio false;
showCinemaBorder false;
_cam = "camera" camCreate _pos;
_cam cameraEffect ["internal", "back"];
_cam camSetFov 1.0;
_cam;
};
/*##################################################################
Libérer la caméra
FNCT_CamFreeCamera()
@param1 la camera a détruire
@return la camera
Ex : _cam = [ _cam ] call FNCT_CamMakeCamera;
##################################################################*/
FNCT_CamFreeCamera = {
_cam = _this select 0;
_cam cameraEffect ["terminate", "back"];
camDestroy _cam;
enableRadio true;
_cam;
};
/*##################################################################
Suivre avec la caméra un objet en déplacement ou pas à partir
d'un autre objet en mouvement ou pas
FNCT_CamFollow()
@param1 Porteur de la camera
@param2 cible de la camera
@param3 durée du plan (en seconde)
@param4 Offset de position de la camera par rapport au véhicule à suivre (x,y,z)
@param5 la caméra
@return la camera
Ex : [OFF1,OFF2,10,[0,-1,1.8],_cam] call FNCT_CamFollow;
#################################################################*/
FNCT_CamFollow = {
_porteur = _this select 0;
_cible = _this select 1;
_duree = _this select 2;
_camOffset = _this select 3;
_cam = _this select 4;
_start = time;
while {((time - _start)< _duree) && (alive _porteur) } do {
_pos = position _porteur;
_x = _pos select 0;
_y = _pos select 1;
_z = _pos select 2;
_cam camSetPos [
_x + (_camOffset select 0 ),
_y + (_camOffset select 1 ),
_z + (_camOffset select 2 )
];
_cam camSetTarget _cible;
_cam camCommit 0;
sleep 0.002;
};
_cam;
};
L'intro.sqf contient le script qui va décrire tous les mouvements de la caméra. La première fonction à appeler est 'FNCT_CamMakeCamera()'.
Cette fonction va mettre en place l'intro et créer une caméra.
exemple :
Sur la Map, placer 1 Humvee nommé HM1 qui suit quelques point de passages. 1 Homme nommé MAN1 qui suit aussi quelques points de passages.
Ils vont nous servir de repère et de porteur pour notre camera.
On créé la caméra :
Code : Tout sélectionner
_cam = [ (getPos player)] call FNCT_CamMakeCamera;
Code : Tout sélectionner
[MAN1,HM1,5,[1,1,1.8],_cam] call FNCT_CamFollow;
Quelque soit les mouvements des unités, la caméra suivra toujours HM1 et sera toujours portée par MAN1.
2eme plan :
Code : Tout sélectionner
[HM1,MAN1,8,[1,3,5],_cam] call FNCT_CamFollow;
3ème plan :
Code : Tout sélectionner
[MAN1,MAN1,10,[0,0.5,2],_cam] call FNCT_CamFollow;
On termine l'intro en libérant la caméra.
Code : Tout sélectionner
[_cam] call FNCT_CamFreeCamera;
Code : Tout sélectionner
/*
intro.sqf
*/
_cam = [ (getPos player)] call FNCT_CamMakeCamera;
[MAN1,HM1 ,5 ,[1,1,1.8],_cam] call FNCT_CamFollow;
[HM1,MAN1 ,8 ,[1,3,5] ,_cam] call FNCT_CamFollow;
[MAN1,MAN1,10,[0,0.5,2],_cam] call FNCT_CamFollow;
[_cam] call FNCT_CamFreeCamera;