Page 1 sur 2

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

Publié : 09 Déc 2010 04:29
par Balldrop
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

Re: Deplacement dans le sens de la camera

Publié : 09 Déc 2010 05:43
par Balldrop
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:)

Re: Deplacement dans le sens de la camera

Publié : 09 Déc 2010 12:25
par alexDesign
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 !

Re: Deplacement dans le sens de la camera

Publié : 09 Déc 2010 15:07
par Ambrosios
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);

Re: Deplacement dans le sens de la camera

Publié : 12 Déc 2010 20:29
par Balldrop
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 ^^

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

Publié : 18 Déc 2010 18:25
par Balldrop
Lancé dans autre chose mais toujours pas trouvé la soluce! :-(

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

Publié : 18 Déc 2010 19:50
par Balldrop
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- ... h-Question

Une image
qui explique un peu la logique du truc :lol: :roll: : http://forum.unity3d.com/attachment.php ... 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.

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

Publié : 18 Déc 2010 20:40
par Anykey
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 ? :?

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

Publié : 18 Déc 2010 20:51
par Balldrop
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?

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

Publié : 19 Déc 2010 01:51
par giyomuSan
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.