Oui je m'en souvient, la soltuion et la invoqué par Titan "this.transform.Translate(hit.normal * speed * Time.deltaTime)" j'ai pas saisi.Max a écrit : ↑27 Août 2017 19:00Tiens, lien direct avec le sujet que tu avais ouvert en octobre 2015 --> viewtopic.php?t=11176
[DB-AL] Déplacer un objet à une certaine distance.
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
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
Re: [DB-AL] Déplacer un objet à une certaine distance.
Re: [DB-AL] Déplacer un objet à une certaine distance.
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 );
}
}
}
}
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
Re: [DB-AL] Déplacer un objet à une certaine distance.
Code : Tout sélectionner
if (hitInfo.normal.y == 0) ...
Re: [DB-AL] Déplacer un objet à une certaine distance.
Code : Tout sélectionner
if (Mathf.Approximately(hitInfo.normal.y, 0))
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)
(merci bien à ceux qui passent mettre des étoiles ! ^^)
Re: [DB-AL] Déplacer un objet à une certaine distance.
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.
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)
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
Re: [DB-AL] Déplacer un objet à une certaine distance.
On en apprend tout les jours.Greg a écrit : ↑28 Août 2017 23:46Mathf.Approximately ^^Code : Tout sélectionner
if (Mathf.Approximately(hitInfo.normal.y, 0))
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)
Re: [DB-AL] Déplacer un objet à une certaine distance.
+1, et plus fiable à mon sens ( retour d'expérience de Mathf.Approximately, perfectible dans certains)ZJP a écrit : ↑29 Août 2017 17:18Cela 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.Code : Tout sélectionner
if (Math.Abs(hitInfo.normal.y) < 0.01f)
(si l'on voulais pinailler et l'écrire de façon académique -> if (Math.Abs(hitInfo.normal.y) < Mathf.Epsilon))
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
Re: [DB-AL] Déplacer un objet à une certaine distance.
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 ?
Sinon tu considères être vieux à partir de quel age ?