Vecteurs normalisés => Quaternions

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
GeoDec
Messages : 38
Inscription : 03 Sep 2010 18:55

Vecteurs normalisés => Quaternions

Message par GeoDec » 31 Mars 2011 19:31

Salut!

J'aurais voulu savoir comment récupérer la valeur de l'angle d'un rayon. Le but étant tout simplement qu'un objet s'oriente dans la même direction que celui-ci.
Merci!

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Vecteurs normalisés => Quaternions

Message par djulio74 » 31 Mars 2011 21:41

salut.
en script tu fais quelque chose du genre :

Code : Tout sélectionner

var cible : Transform;

function UpDate(){
Transform.rotation = cible.rotation;
}
en appliquant ce script a l'objet qui doit suivre l'autre, cet autre qui est la cible

ou alors, si t'as le vecor3 de ton vecteur normalisé ; Transform.rotation = "vecteur normalisé" (=>ce sera un Vector3(x,y,z))
est-ce que que tu veux faire? ;)

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
GeoDec
Messages : 38
Inscription : 03 Sep 2010 18:55

Re: Vecteurs normalisés => Quaternions

Message par GeoDec » 31 Mars 2011 22:28

En gros ce que je cherche à faire c'est tirer un projectile dans la direction d'un rayon projeté par la camera.

La fonction instanciate demande une rotation, or les seules variables d'un rayon c'est, origin et direction.
Ici j'ai mis ray.direction mais ca passe pas.

Code : Tout sélectionner

//rayon
var viseur : GameObject;
private var ray : Ray;
private var screenPos : Vector2;

//projectile
var throwForce : float;
var projectileObject : Rigidbody;
private var newProjectile : Rigidbody;

//timer
var fireRate : float = 0.5;
private var nextFire : float = 0.0;


function FixedUpdate () {

     //Convertir les coordonées du viseur en pixel
     screenPos.y=(viseur.transform.position.y*Screen.height);
     screenPos.x=(viseur.transform.position.x*Screen.width);

     //Tirer le projectile
     if(Input.GetButtonUp("Fire1") && Time.time > nextFire) {
          ray = camera.ScreenPointToRay(screenPos);
          newProjectile = Instantiate(projectileObject, ray.origin, ray.direction);
          newProjectile.rigidbody.velocity = projectileObject.transform.TransformDirection(Vector3(0,0,throwForce));
     }

}

Répondre

Revenir vers « Scripting »