Spawn sur une direction

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
ilanb
Messages : 36
Inscription : 11 Déc 2012 23:26

Spawn sur une direction

Message par ilanb » 11 Juin 2014 10:06

Hello,

J'essai de spawner un véhicule dans le sens de marche lorsque celui-ci c'est planté (retourné, coincé...).
j'utilise :

Code : Tout sélectionner

public void Respawn () 
	{
		rigidbody.velocity = new Vector3(0f, 0f, 0f);
		Vector3 a = transform.localRotation.eulerAngles;
		a.x = 0;
		a.y = Mathf.Repeat(a.y + Input.GetAxis("Horizontal") * 5f, 360f);
		a.z = 0;
		transform.localRotation = Quaternion.Euler(a);
		transform.localPosition = transform.localPosition + Vector3.up;
	}
Le véhicule et bien à l'endroit mais pas dans le sens de marche, j'ai pensé à ajouter des waypoints.. mais comment trouver la direction ? j'ai bien tenté raycast, hit... sans succès.

Une idée ? :-)

Merci

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Spawn sur une direction

Message par F@B » 11 Juin 2014 10:27

Salut,

tout simplement transform.LookAt()
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

ilanb
Messages : 36
Inscription : 11 Déc 2012 23:26

Re: Spawn sur une direction

Message par ilanb » 11 Juin 2014 10:48

En effet c'est le premier truc auquel j'ai pensé :mrgreen: mais lookat vers quoi ... même si je met un waypoint il faut que je sache ou je suis pour lui dire lookat(next waypoint) ... est-ce viable ?

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Spawn sur une direction

Message par F@B » 11 Juin 2014 10:51

le LookAt se fait depuis un transform donc ou est le problème?

le transform en cours (ma voiture) lookat mon waypoint.

après ta mécanique de waypoint c'est autre chose.

je te conseille de suivre les tutos pour appréhender les bases d'unity sur unity learn.
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

ilanb
Messages : 36
Inscription : 11 Déc 2012 23:26

Re: Spawn sur une direction

Message par ilanb » 11 Juin 2014 11:44

Merci :mrgreen:
j'ai pas trop de problème avec unity en fait... ma question ne porte pas sur l'utilisation des waypoints mais savoir si c viable ou pas, si il y a une meilleur méthode...

Avatar de l’utilisateur
manthoR
Messages : 180
Inscription : 15 Mai 2014 11:43
Localisation : Paris, France
Contact :

Re: Spawn sur une direction

Message par manthoR » 11 Juin 2014 11:59

Salut,
Pour mon jeu j'ai eu besoin du même type de mécanique.
J'ai simplement ajouté des gameobjects tagués orienté dans le sens de la course. Quand le joueur doit respawn il apparait sur le gameobject "checkpoint" le plus proche et j'applique au player la même rotation.
Pas besoin de savoir quel est le prochain point.
C'est ma bidouille rapide :)
Flavien - Social networkons ! Twitter - Google+ - Facebook
Image

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Spawn sur une direction

Message par F@B » 11 Juin 2014 12:00

c'est viable le LookAt et même recommandé. la mécanique de waypoint par contre peut être complexe.

par contre ton code au début il marche mais c'est pas super clair! :p pourquoi récupérer dans a les valeur courante de rotation pour les écraser par d'autres?

Code : Tout sélectionner

      rigidbody.velocity = new Vector3(0f, 0f, 0f);
      transform.localRotation.eulerAngles = new Vector3(0, Mathf.Repeat(a.y + Input.GetAxis("Horizontal") * 5f, 360f), 0);
      transform.localPosition += Vector3.up; 
ceci fait le même job si je dis pas de bêtises.
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

ilanb
Messages : 36
Inscription : 11 Déc 2012 23:26

Re: Spawn sur une direction

Message par ilanb » 11 Juin 2014 12:26

Car il faut mettre les valeur dans une variable temporaire, tu peux pas faire : transform.localRotation.eulerAngles = new Vector3(0, Mathf.Repeat(a.y + Input.GetAxis("Horizontal") * 5f, 360f), 0);

Avatar de l’utilisateur
manthoR
Messages : 180
Inscription : 15 Mai 2014 11:43
Localisation : Paris, France
Contact :

Re: Spawn sur une direction

Message par manthoR » 11 Juin 2014 13:20

Tu peux faire ca en revanche je crois :

Code : Tout sélectionner

transform.localRotation= Quaternion.Euler(new Vector3(0, Mathf.Repeat(a.y + Input.GetAxis("Horizontal") * 5f, 360f), 0))
Flavien - Social networkons ! Twitter - Google+ - Facebook
Image

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Spawn sur une direction

Message par F@B » 11 Juin 2014 14:05

oui ou le mieux c'est transform.Rotate en principe.
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Répondre

Revenir vers « Scripting »