Page 1 sur 2

tutoriel 16 Krys gestion de camera

Publié : 21 Juin 2012 19:21
par jeinsei
Bonjour,

Bon je me décide a poster ce message un peu dépiter car je voudrais ajouter d'autre camera au très bon tuto de krys sur le déplacement de celles-ci, mais je n'y arrive pas ( mode gros noob ON).

Code : Tout sélectionner

var cam1:GameObject;
var cam2:GameObject;
var cam3:GameObject;
 
function switchCam(){
cam2.active=false;
cam3.active=false;
 
yield WaitForSeconds(1);
 
aniCam(cam1,cam2,10);
yield WaitForSeconds(10);
 
aniCam(cam1,cam3,8);
 
}
 
function aniCam(arg1:GameObject,arg2:GameObject,arg3:Number){
Ani.Mate.To(arg1.transform,arg3,{"position": new Vector3(arg2.transform.position.x,arg2.transform.position.y,arg2.transform.position.z)});
 
Ani.Mate.To(arg1.transform,arg3,{"rotation":Quaternion.Euler(arg2.transform.eulerAngles.x,arg2.transform.eulerAngles.y,arg2.transform.eulerAngles.z),"drive":Ani.Drive.Slerp});
}
 
switchCam();

Je comprend le code dans son idée, je suppose qu'il faut que je rajoute mes autres camera (4,5,6,) en variable au début, puis que je fasse de nouvelles couroutines via "yeld" pour définir les nouvelles animations. Mais arrivé dans la fonction suivante je vois pas comment indiquer les nouveaux mouvements de la camera 3 vers la 4, 5 et 6. même si je suppose qu'il faut utiliser le même script pour continuer à déplacer la camera, je n'y arrive pas... :oops:

Re: tutoriel 16 Krys gestion de camera

Publié : 13 Juil 2012 15:42
par freepl
Salut

Pour une fois c'est moi qui aide :)

Je te passe un script pour 30 caméras , j'ai fait tourner la caméra pour qu'elle regarde en bas.
si tu ne veux pas en lève les " + 90" dans les dernières lignes

Code : Tout sélectionner

#pragma strict
// declaration des variables
var cam1:GameObject;
var cam2:GameObject;
var cam3:GameObject;
var cam4:GameObject;
var cam5:GameObject;
var cam6:GameObject;
var cam7:GameObject;
var cam8:GameObject;
var cam9:GameObject;
var cam10:GameObject;
var cam11:GameObject;
var cam12:GameObject;
var cam13:GameObject;
var cam14:GameObject;
var cam15:GameObject;
var cam16:GameObject;
var cam17:GameObject;
var cam18:GameObject;
var cam19:GameObject;
var cam20:GameObject;
var cam21:GameObject;
var cam22:GameObject;
var cam23:GameObject;
var cam24:GameObject;
var cam25:GameObject;
var cam26:GameObject;
var cam27:GameObject;
var cam28:GameObject;
var cam29:GameObject;
var cam30:GameObject;


  
// Fonction qui désactive les caméras 2 à 30 donc seul la 1° , la MAINCAMERA, est visible
function switchCam(){
cam2.active=false;
cam3.active=false;
cam4.active=false;
cam5.active=false;
cam6.active=false;
cam7.active=false;
cam8.active=false;
cam9.active=false;
cam10.active=false;
cam11.active=false;
cam12.active=false;
cam13.active=false;
cam14.active=false;
cam15.active=false;
cam16.active=false;
cam17.active=false;
cam18.active=false;
cam19.active=false;
cam20.active=false;
cam21.active=false;
cam22.active=false;
cam23.active=false;
cam24.active=false;
cam25.active=false;
cam26.active=false;
cam27.active=false;
cam28.active=false;
cam29.active=false;
cam30.active=false;
// Le script est en pause 1 seconde. On lance la fonction créée dessous. On remplace les arg1, arg2 et arg3
// par leur valeur : objet, objet et chiffre)
// fonction aniCam : la cam1 va vers cam2 en 0.1 secondes
yield WaitForSeconds(1);
aniCam(cam1,cam2,0.1);
// fonction aniCam : On géle le script 1 seconde cam1 qui va vers position de la cam3 en 2 secondes, etc ..
yield WaitForSeconds(1);
aniCam(cam1,cam3,2);
yield WaitForSeconds(1);
aniCam(cam1,cam4,2);
yield WaitForSeconds(1);
aniCam(cam1,cam5,2);
yield WaitForSeconds(1);
aniCam(cam1,cam6,2);
yield WaitForSeconds(1);
aniCam(cam1,cam7,2);
yield WaitForSeconds(1);
aniCam(cam1,cam8,2);
yield WaitForSeconds(1);
aniCam(cam1,cam9,2);
yield WaitForSeconds(1);
aniCam(cam1,cam10,2);
yield WaitForSeconds(1);
aniCam(cam1,cam11,2);
yield WaitForSeconds(1);
aniCam(cam1,cam12,2);
yield WaitForSeconds(1);
aniCam(cam1,cam13,2);
yield WaitForSeconds(1);
aniCam(cam1,cam14,2);
yield WaitForSeconds(1);
aniCam(cam1,cam15,2);
yield WaitForSeconds(1);
aniCam(cam1,cam16,2);
yield WaitForSeconds(1);
aniCam(cam1,cam17,2);
yield WaitForSeconds(1);
aniCam(cam1,cam18,2);
yield WaitForSeconds(1);
aniCam(cam1,cam19,2);
yield WaitForSeconds(1);
aniCam(cam1,cam20,2);
yield WaitForSeconds(1);
aniCam(cam1,cam21,2);
yield WaitForSeconds(1);
aniCam(cam1,cam22,2);
yield WaitForSeconds(1);
aniCam(cam1,cam23,2);
yield WaitForSeconds(1);
aniCam(cam1,cam24,2);
yield WaitForSeconds(1);
aniCam(cam1,cam25,2);
yield WaitForSeconds(1);
aniCam(cam1,cam26,2);
yield WaitForSeconds(1);
aniCam(cam1,cam27,2);
yield WaitForSeconds(1);
aniCam(cam1,cam28,2);
yield WaitForSeconds(1);
aniCam(cam1,cam29,2);
yield WaitForSeconds(1);
aniCam(cam1,cam30,2);
}

// La camera regarde en bas car on a ajoute une  rotation sur Ox et Oz "rotation":Quaternion...eulerAngles.x + 90,..ulerAngles.x + 90,
function aniCam(arg1:GameObject,arg2:GameObject,arg3:Number){
Ani.Mate.To(arg1.transform,arg3,{"position": new Vector3(arg2.transform.position.x,arg2.transform.position.y,arg2.transform.position.z)});
Ani.Mate.To(arg1.transform,arg3,{"rotation":Quaternion.Euler(arg2.transform.eulerAngles.x+90,arg2.transform.eulerAngles.y,arg2.transform.eulerAngles.z+90),"drive":Ani.Drive.Slerp});
}
switchCam();




Re: tutoriel 16 Krys gestion de camera

Publié : 13 Juil 2012 16:14
par cayou66
Encore ce code ?! Il me semblait qu'on avait vu ensemble comment faire pour un nombre quelconque de caméras....
Quelle idée de faire 30 variables...

Re: tutoriel 16 Krys gestion de camera

Publié : 13 Juil 2012 16:28
par freepl
c'était juste pour aider..... et cela repond à sa question de modification, sans plus

Re: tutoriel 16 Krys gestion de camera

Publié : 13 Juil 2012 16:31
par cayou66
freepl a écrit :c'était juste pour aider..... et cela repond à sa question de modification, sans plus
J'ai pas dis le contraire, je dis juste que c'est une méthode très sale, qu'il faut éviter...
Y'a deux règles de bases pour un programmeur:
- Lorsqu'on écrit deux fois le même code, on fait une fonction pour ça, ou on fait du code unique (via loop, tableaux, etc...), ce qui est le cas de ce script.
- Lorsqu'on répète une tâche plusieurs fois, on fait un outil pour rendre cette tâche automatisée.

C'est vraiment la base de la programmation...

Si je fais ce genre code dans un milieu pro. je me fais virer cash ;)

Re: tutoriel 16 Krys gestion de camera

Publié : 13 Juil 2012 16:38
par Loulou
XD
En faite un dev ne ferait jamais ce genre de code.
Il aurait trop la flemme de taper toutes ces lignes identique (meme avec le copier/coller) :p

Ma mere me disait "quand on a pas de tète, on a des jambes"
Je trouve que ca pourrait s'appliquer a ce cas de figure aussi :)

Re: tutoriel 16 Krys gestion de camera

Publié : 13 Juil 2012 16:47
par Max
Loulou a écrit :Il aurait trop la flemme de taper toutes ces lignes identique (meme avec le copier/coller) :p
Image

Re: tutoriel 16 Krys gestion de camera

Publié : 13 Juil 2012 16:58
par cayou66
Loulou a écrit :XD
En faite un dev ne ferait jamais ce genre de code.
Il aurait trop la flemme de taper toutes ces lignes identique (meme avec le copier/coller) :p

Ma mere me disait "quand on a pas de tète, on a des jambes"
Je trouve que ca pourrait s'appliquer a ce cas de figure aussi :)
Et si son boss vient le voir pour lui dire, finalement j'en veux 300 de caméras :roll:

COPY/PASTE !

Re: tutoriel 16 Krys gestion de camera

Publié : 13 Juil 2012 19:21
par freepl
Pourquoi s'acharner sur les débutants ?
Vous n'avez pas d'amis pour discuter ? :D

Re: tutoriel 16 Krys gestion de camera

Publié : 13 Juil 2012 19:34
par cayou66
freepl a écrit :Pourquoi s'acharner sur les débutants ?
Vous n'avez pas d'amis pour discuter ? :D
...,
On s'acharne pas, on veut juste éviter que quelqu'un pense que cette solution est une bonne solution, que le code est un bon code, et que c'est bien de faire pareil.
Je ne reposterais pas ma solution, car je l'ai déjà posté, il suffit de chercher un peu sur le forum avec les bons mots clés.