Déplacement caméra sur les 3 axes avec Sandy3D

Déplacement caméra sur les 3 axes avec Sandy3D - Flash/ActionScript - Programmation

Marsh Posté le 04-01-2010 à 01:53:02    

Bonjour,
 
je suis actuellement en train de coder une petite appli avec Sandy3D, dans laquelle j'ai une pièce ou je positionne ma caméra.
 
J'ai reussi, grâce aux Events, a faire tourner ma caméra sur elle même avec les flèches RIGHT et LEFT. Par contre pour ce qui est de l'a faire avancer, j'aimerais pouvoir l'a faire avancer dans la direction dans laquelle elle regarde, et pas seulement sur un axe, quelqu'un a une idée de comment faire ça?
 
Pour le moment voici mon listener:
 
private function keyPressed(event:KeyboardEvent):void {
   switch (event.keyCode) {
    case Keyboard.UP :
     camera.z+= 5;
     break;
    case Keyboard.DOWN :
     camera.z-= 5;
     break;
    case Keyboard.RIGHT :
     camera.pan+= 2;
     break;
    case Keyboard.LEFT :
     camera.pan-= 2;
     break;
 
   }
  }
 
Merci à tous.
 :hello:


Message édité par Dukeb le 04-01-2010 à 01:53:19
Reply

Marsh Posté le 04-01-2010 à 01:53:02   

Reply

Marsh Posté le 04-01-2010 à 11:19:36    

up!

Reply

Marsh Posté le 04-01-2010 à 15:04:23    

up!

Reply

Marsh Posté le 05-01-2010 à 10:32:47    

Tu as plusieurs solution :
 
1) Un peu de mathématique !
Ressors tes cours de géométrie (cosinus / sinus, idéalement géométrie dans l'espace si tu sors d'une filière S du lycée), tu pourras en fonction d'un angle de direction (pour chaque axe) ainsi qu'une distance souhaitée, calculer l'incrémentation nécessaire à chaque axe pour déplacer ta caméra au bon endroit...
 
2) Jeu d'emboitement
 
Je ne sait pas si c'est possible dans Sandy d'enfermer la caméra dans un conteneur tierce, moi je l'ai laché très vite ce framework à cause de divers problème rencontré...
Si ça l'est, l'astuce est d'enfermer la caméra dans un conteneur...
les touche up/down déplace la caméra dans son axe z relatif, tandis que right/down pivote le conteneur.
 
3) Je suis sûre que les caméra de Sandy3D offre des methodes() pour faire tout ça, c'est le cas de nombreux frameworks 3D...
Dans Away3D, c'est la fonction moveForward(distance:Number) / moveBackward(...) je crois.


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 07-01-2010 à 19:15:05    

Merci pour ton aide, effectivement y a une fonction qui est déjà implémentée dans Sandy3D qui permet de faire un moveForward, c'est ce que j'ai fait c'est impec!
 
Par contre maintenant je bloque sur un autre truc qui est la gestion des collisions, car j'ai fait une pièce, et je passe à travers les murs là... J'ai pensé à check les coordonnées à chaque déplacement mais ça va être trop lourd de vérifier à chaque fois si je rentre pas en collision avec un des murs, et si je rajoute des objets n'en parlons pas...
 
C'est étonnant que Sandy3D ne propose rien pour gérer les collisions, mais ils en parlent dans aucun tuto, et je trouve rien sur le net à ce sujet, donc là je sèche un peu...

Reply

Marsh Posté le 07-01-2010 à 23:28:42    

Je connais pas Sandy... je sais que les collisions sont bien gérés par Alternativa3D, après je sais pas...
Tu risque de devoir le bricoler toi même


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 10-01-2010 à 21:51:14    

J'essaye d'utiliser Jiglibflash, des fois que ça aide quelqu'un aussi.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed