[DB-AL] Déplacer un objet à une certaine distance.

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par cortoh » 27 Août 2017 22:07

Max a écrit :
27 Août 2017 19:00
Tiens, lien direct avec le sujet que tu avais ouvert en octobre 2015 --> viewtopic.php?t=11176
Oui je m'en souvient, la soltuion et la invoqué par Titan "this.transform.Translate(hit.normal * speed * Time.deltaTime)" j'ai pas saisi.

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par Max » 28 Août 2017 21:10

cortoh a écrit :
27 Août 2017 22:07
Oui je m'en souvient, la soltuion et la invoqué par Titan "this.transform.Translate(hit.normal * speed * Time.deltaTime)" j'ai pas saisi.
Dans ce cas, la solution consiste, non plus à passer par la fonction OnMouseDown pour la sélection de ton cube, mais par les Raycast. On va donc faire un lancé de rayon à partir de la position camera avec une direction qui sera 'fournis' par ton pointeur souris. En retour, si un objet se trouve sur la trajectoire de ce rayon (et qu'il possède un collider), nous aurons un certains nombre
d'information relative à l'objet 'touché' (dans ton cas normalement ton cube), comme le point d'impact, son nom, etc... mais aussi la normale de la face touchée (ne pas hésiter à utiliser les layers pour filtrer le raycast, cf la doc).
La normale de la face touché par le rayon correspondra donc à la direction à faire prendre à ce cube pour avancer.

En code, cela pourrait se traduire dans le principe par ce genre de chose, basé sur ce qui avait été dit en final dans le sujet de 2015:

Code : Tout sélectionner

	float speed = 8f; // pas de déplacement

	void Update()
	{
		RaycastHit hitInfo; 
		if (Input.GetMouseButtonDown(0))
		{
			if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hitInfo)) 
			{
				if (hitInfo.normal.y == 0)  // on ne veut pas des faces dirigées vers le haut/bas
				{
					transform.Translate (hitInfo.normal * speed );
				}
			}
		} 
	}
Pour plus d'élément sur l'emploie des Raycast, ne pas hésiter à se tourner vers les tuto du Learn, par exemple.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
ZJP
Messages : 5745
Inscription : 15 Déc 2009 06:00

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par ZJP » 28 Août 2017 22:16

Code : Tout sélectionner

if (hitInfo.normal.y == 0)  ...
On cherche des ennuis avec des floats ?!! :mrgreen:

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par Greg » 28 Août 2017 23:46

Code : Tout sélectionner

if (Mathf.Approximately(hitInfo.normal.y, 0))
Mathf.Approximately ^^
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par cortoh » 29 Août 2017 06:16

Ok, je vais tenter de traduire ça en js et faire des essais ce soir, merci.

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par Max » 29 Août 2017 09:19

cortoh a écrit :
29 Août 2017 06:16
Ok, je vais tenter de traduire ça en js et faire des essais ce soir, merci.
ourf, section JS, j'avais oublié (étourdis à cette heure déjà tardive pour les vieux).
Sorry. Bon y'a pas grand chose à adapter ceci dit (et pis va falloir s'y mettre au C#, car bientôt bye bye le JS) ;)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
ZJP
Messages : 5745
Inscription : 15 Déc 2009 06:00

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par ZJP » 29 Août 2017 17:18

Greg a écrit :
28 Août 2017 23:46

Code : Tout sélectionner

if (Mathf.Approximately(hitInfo.normal.y, 0))
Mathf.Approximately ^^
On en apprend tout les jours. ;-)

Cela dit, vu qu'il s’agit d'une fonction de l'API d'Unity, je reste sur les comparaisons de floats "classiques" .

Code : Tout sélectionner

if (Math.Abs(hitInfo.normal.y) < 0.01f)
...fera l'affaire. :mrgreen:

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par Max » 29 Août 2017 17:32

ZJP a écrit :
29 Août 2017 17:18
Cela dit, vu qu'il s’agit d'une fonction de l'API d'Unity, je reste sur les comparaisons de floats "classiques" .

Code : Tout sélectionner

if (Math.Abs(hitInfo.normal.y) < 0.01f)
...fera l'affaire. :mrgreen:
+1, et plus fiable à mon sens ( retour d'expérience de Mathf.Approximately, perfectible dans certains)
(si l'on voulais pinailler et l'écrire de façon académique -> if (Math.Abs(hitInfo.normal.y) < Mathf.Epsilon))
;)
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
ZJP
Messages : 5745
Inscription : 15 Déc 2009 06:00

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par ZJP » 29 Août 2017 17:51

+1 du +1 :mdr1:

cortoh
Messages : 159
Inscription : 22 Nov 2014 23:05

Re: [DB-AL] Déplacer un objet à une certaine distance.

Message par cortoh » 29 Août 2017 19:30

Et bien du coup je vais continuer en C# vu qu'il faudra le faire tôt ou tard, j'ai monté une maquette avec ton bout de code, je tente de faire déplacer le cube en continue en fonction du variable mais je n'y arrive pas.
Sinon tu considères être vieux à partir de quel age ?

Verrouillé

Revenir vers « (Js) Javascript »