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

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Balldrop
Messages : 16
Inscription : 09 Déc 2010 04:14

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

Message par 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

Message par 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:)

alexDesign
Messages : 3
Inscription : 24 Nov 2010 11:20
Localisation : Rennes / Blois

Re: Deplacement dans le sens de la camera

Message par 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

Avatar de l’utilisateur
Ambrosios
Messages : 149
Inscription : 07 Jan 2010 10:13

Re: Deplacement dans le sens de la camera

Message par 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

Balldrop
Messages : 16
Inscription : 09 Déc 2010 04:14

Re: Deplacement dans le sens de la camera

Message par 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

Message par 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

Message par 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- ... 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.

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

Message par 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 ? :?

Balldrop
Messages : 16
Inscription : 09 Déc 2010 04:14

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

Message par 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?

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

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

Message par 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.

Répondre

Revenir vers « Unity le logiciel »