Page 2 sur 3
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 27 Août 2017 22:07
par cortoh
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.
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 28 Août 2017 21:10
par Max
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.
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 28 Août 2017 22:16
par ZJP
On cherche des ennuis avec des
floats ?!!
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 28 Août 2017 23:46
par Greg
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 29 Août 2017 06:16
par cortoh
Ok, je vais tenter de traduire ça en js et faire des essais ce soir, merci.
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 29 Août 2017 09:19
par Max
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)
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 29 Août 2017 17:18
par ZJP
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" .
...fera l'affaire.
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 29 Août 2017 17:32
par Max
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" .
...fera l'affaire.
+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))
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 29 Août 2017 17:51
par ZJP
+1 du +1
Re: [DB-AL] Déplacer un objet à une certaine distance.
Publié : 29 Août 2017 19:30
par cortoh
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 ?