RETOUR AU SITE UNITY3D-FRANCE Forum Unity3D-France • Afficher le sujet - Deplacement d'une sphere en rotation ds le sens de la camera

Deplacement d'une sphere en rotation ds le sens de la camera

Toutes les questions et les news sur Unity

Modérateur: LudlowFx

Deplacement d'une sphere en rotation ds le sens de la camera

Messagepar Balldrop » 09 Déc 2010, 04:29

Bonjour,
J'ai une sphere suivit par une camera. La sphere est comme mon "player". Je voudrais que lorsque j'appuis sur la fleche du haut (pour faire avancer la balle) ma boule aille vers la ou l'utilisateur regarde.

Pour deplacer ma boule j'utilise la fonction addForce.
J'ai attaché un rigidbody a la balle. Elle se comporte comme un ballon, elle roule et rebondi.
J'utilise un script qui déplace la camera à l'aide de la souris.

Voila le code du script que j'ai commencé mais je bloque toujours même après avoir essayé plusieurs choses/techniques. D'où vient le probleme?!
Comment faire?

Voila une partie du script
Code: Tout sélectionner
var cam : GameObject;
var direction : Vector3;

function Update () {
   
   if(Input.GetKey("up")) {
      direction.x = cam.transform.rotation.x;
      direction.z = cam.transform.rotation.z;      
      rigidbody.AddForce(direction * Time.deltaTime * 4000000);
   }   
      
}


Un grand merci
Dernière édition par Balldrop le 18 Déc 2010, 18:19, édité 1 fois.
Balldrop
 
Messages: 16
Inscription: 09 Déc 2010, 04:14

Re: Deplacement dans le sens de la camera

Messagepar Balldrop » 09 Déc 2010, 05:43

Je viens d'essayer ça.

Code: Tout sélectionner
direction = GameObject.Find("Camera").TransformDirection(0,0,direction.z);
      rigidbody.AddForce(direction * Time.deltaTime * 4000000);


Mais là le debugger me dit texto "BCE0019: 'TransformDirection' is not a member of 'UnityEngine.GameObject'."
Je comprend pas, pourtant je me suis inspiré de ces quelques lignes du script FPSWalker
Code: Tout sélectionner
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
      moveDirection = transform.TransformDirection(moveDirection);


J'ai le cerveau qui tourne en boucle, j'comprend plus rien il est tard merci de votre aide.
(ou si j'en fais rire quelques uns c'est toujours ça.. :roll:)
Balldrop
 
Messages: 16
Inscription: 09 Déc 2010, 04:14

Re: Deplacement dans le sens de la camera

Messagepar alexDesign » 09 Déc 2010, 12:25

Bonjour, je pense qu'il s'agit d'une simple erreur de ponctuation, étant débutant ça m'arrive tout le temps...
je pense qu'il faut remplacer TransformDirection par Transform.Direction
j'espère que ça marchera ! sinon je laisse ma place aux experts !
citation favorite : "je débute, mais ça va saigner !" Guertrude, barbare simérienne niveau 1
alexDesign
 
Messages: 3
Inscription: 24 Nov 2010, 11:20
Localisation: Rennes / Blois

Re: Deplacement dans le sens de la camera

Messagepar Ambrosios » 09 Déc 2010, 15:07

Bonjour,

Code: Tout sélectionner
"BCE0019: 'TransformDirection' is not a member of 'UnityEngine.GameObject'."


Effectivement TransformDirection est une fonction membre de la classe Transform. Il faut donc l'appliquer sur un objet de type transform.

Quand tu fais :
Code: Tout sélectionner
direction = GameObject.Find("Camera").TransformDirection(0,0,direction.z);


Tu utilises la fonction sur un GameObject donc tu obtiens le message d'erreur mentionné ci-dessus.
Essaye ça plutôt :
Code: Tout sélectionner
direction = GameObject.Find("Camera").transform.TransformDirection(0,0,direction.z);
A3G - WarGround
DevBlog
Avatar de l’utilisateur
Ambrosios
 
Messages: 150
Inscription: 07 Jan 2010, 10:13

Re: Deplacement dans le sens de la camera

Messagepar Balldrop » 12 Déc 2010, 20:29

Merci à vous deux Alex et Ambrosios.

Effectivement après avoir ajouté la variable transform je n'ai plus eu de msg d'erreur.
Je suis toujours coincé. Ma boule ne se comporte pas comme il faut.

En fait mon problème est que je ne sais pas comment transformer l'orientation de la camera (qui est un angle) en information vectorielle (pour le déplacement de ma boule).
Peut-être est ce une base en trigogeometricoalphapseudoarithmetique mais je ne suis pas un scientifique je suis un peu (completement) paumé.
Je vais regarder des actionscript flash. Je crois qu'il y a ce genre de chose avec la souris qui commande le deplacement d'objets, ça devrait m'aider.
C'est pas évidant sans l'adsl, donc videos, tutos et tout le tralala dans le 'uc :mrgreen:
Oui ça existe ^^
Balldrop
 
Messages: 16
Inscription: 09 Déc 2010, 04:14

Re: Deplacement d'une sphere en rotation ds le sens de la ca

Messagepar Balldrop » 18 Déc 2010, 18:25

Lancé dans autre chose mais toujours pas trouvé la soluce! :-(
Balldrop
 
Messages: 16
Inscription: 09 Déc 2010, 04:14

Re: Deplacement d'une sphere en rotation ds le sens de la ca

Messagepar Balldrop » 18 Déc 2010, 19:50

je ne sais pas comment transformer l'orientation de la camera (qui est un angle) en information vectorielle (pour le déplacement de ma boule).


Ouf; alors voila j'ai trouvé la réponse à ma question (qui releve plus des maths que de unity) sur le forum anglais de unity. Le topic : http://forum.unity3d.com/threads/70932-Vector-Math-Question

Une image
qui explique un peu la logique du truc :lol: :roll: : http://forum.unity3d.com/attachment.php?attachmentid=15831&d=1292469704

Et la réponse qu'on a apporté a celui qui se trouve dans la meme situation que moi :
Vector.X = Cos(angle)
Vector.Y = Sin(angle)

(tweak for degrees/radians as needed)

That should give you the components of a unit vector (magnitude = 1)

EDIT: assuming that the angle starts at 0 along the positive X axis, then increases counter-clockwise (45 degrees would be up-right, 90 degrees would be straight up, 135 degrees is up-left)


Il ne me reste plus qu'a sortir du brouillard de la soirée d'hier et à m'attarder un peu sur le sujet, le code.
Balldrop
 
Messages: 16
Inscription: 09 Déc 2010, 04:14

Re: Deplacement d'une sphere en rotation ds le sens de la ca

Messagepar Anykey » 18 Déc 2010, 20:40

Je sais que c'est pas à moi de faire la loi , mais t'aurais peut être du poster ça dans la catégorie scripting non ? :?
Avatar de l’utilisateur
Anykey
 
Messages: 16
Inscription: 16 Déc 2010, 00:51

Re: Deplacement d'une sphere en rotation ds le sens de la ca

Messagepar Balldrop » 18 Déc 2010, 20:51

C'est vrai. C'est le fouillis dans cette section, je n'mettais pas rendu compte que je postais dans la mauvaise.
Si un modérateur pouvait déplacer mon topic, je lui en serai reconnaissant (pas trop non plus :mrgreen: )

Tu n'as rien d'autre a ajouter Anykey?
Balldrop
 
Messages: 16
Inscription: 09 Déc 2010, 04:14

Re: Deplacement d'une sphere en rotation ds le sens de la ca

Messagepar giyomuSan » 19 Déc 2010, 01:51

c'est en 3D ton truc ?

sur quel axe est ton "forward" ?

car pour n'importe quel object ds unity ( camera inclu ) si tu veux recuperer le vecteur selon +Z de celui ci >>
"transform.forward"

et si tu veux un vecteur normaliser >> transform.forward.normalized.

et ca te donnera le la direction Z positive de ton object. Ensuite selon ce que tu veux faire faut juste bosser avec des operation de vecteurs.
Avatar de l’utilisateur
giyomuSan
 
Messages: 1636
Inscription: 09 Déc 2009, 14:52
Localisation: Japon

Suivante

Retourner vers Unity le logiciel

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités