Derek82 a écrit : ↑05 Juin 2020 20:13
Code : Tout sélectionner
private float direction = 1.0f; // permet de savoir si on va a gauche ou a droite
> ça c'est très clair, en gros c'est comment le personnage est orienté. Donc "1.0f" c'est sa position de base (qu'elle soit à droite ou à gauche peu importe) c'est bien ça ?
Non en fait je défini juste une valeur par défaut, de tout façon elle sera réassignée. peut très bien écrire :
donc au départ sera égale a zéro, mais dans ce cas risque de problème car je multiplie un vecteur par cette valeur, et si elle n'est pas modifiée dans le script, le résultat sera un vecteur nulle.
Derek82 a écrit : ↑05 Juin 2020 20:13
Code : Tout sélectionner
// on compare la direction du perso (la direction qui pointe devant lui, on retourne le perso s'il est différent de la direction
if (transform.forward != Vector3.right * direction) { transform.forward = Vector3.right * direction; }
Et donc là je ne suis plus sûr :
"transform.forward" c'est le déplacement en avant
"!" c'est la valeur négative/opposée/contraire ?
donc tu dis "si tu le déplacement en avant se fait dans le sens contraire de l'orientation du personnage, alors..."
c'est à peu près ça ?
et la suite serait "...alors déplace-toi en avant en suivant l'orientation du personnage" et je ne comprends pas bien comment s'articule ces deux "phrases".
transform.forward est un vector3 qui est en gros dans la direction du regard.
tu devrait un peu plus te familiariser avec le C#. par exemple dans une condition (if) :
== compare si les deux élément son égaux
!= compare si les deux éléments sont différent
le vector transform.forward = vector3(0,0,1) dans le repère du personnage. il change si l'orientation du personnage change.
le vector3.right est le vector3(1,0,0) dans le repère monde, donc toujours égale a ça.
le sens "direction" est positif ou négatif, donc un vecteur qui regarde vers x ou -x.
ton perso doit se diriger vers x ou -x justement dans ton cas (en avant ou en arrière), il faut donc que son vecteur transform.forward = (1,0,0) ou (-1,0,0) et aura donc une rotation autour de l'axe Y (vertical) de 90 ou -90 degré.
donc si le perso ne regarde pas dans la bonne direction, on assigne son forward avec la direction voulue, ce qui reviens a lui faire faire une rotation de 180 degrés autour de Y (axe vertical)
Derek82 a écrit : ↑05 Juin 2020 20:13
et l'autre phrase que je ne suis pas sûr de décoder c'est :
Ceci est pour simuler la gravité. la gravité ce traduit par une accélération verticale vers le base de 9.81m/s/s. donc on ajoute un déplacement vers le bas, de la valeur de la gravité, et le controler fera descendre le perso en suivant une accélération verticale s'il ne touche pas le sol.
Voila pour les explication, plus qu'as remettre les éléments manquant (animation) et nous montrer le résultat final.