Personnage monte escalier mais sur path et doncmvt en dent de scie

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par boubouk50 » 14 Nov 2019 00:49

Fais un effort, je t'ai indiqué où deux fois déjà. Relis!
Au bout d'un moment, c'est assez épuisant de ne faire que te donner les solutions...
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par freepl » 14 Nov 2019 09:46

transform.LookAt dit de regarder l'objet défini par PointOnPath avec ses 3 rotations et ses 3 directions.
Itween lance le script Itween
PointOnPath demande un chemin, défini par le tableau tablist, et un pourcentage défini par fraction + 01.f.
Ce que je ne comprends pas c'est à quel moment lui donner la directive de rester vertical.

Code : Tout sélectionner

transform.LookAt(iTween.PointOnPath(tabtList, fraction + 0.1f));

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par boubouk50 » 14 Nov 2019 10:45

boubouk50 a écrit :
13 Nov 2019 18:08
Comme dit précédemment, il faut gérer "l'inclinaison" juste après le LookAt ()
Ce n'est pas assez explicite?
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par freepl » 14 Nov 2019 11:06

MSG Reedite

J'avais bien compris mais je pensais qu'il fallait garder la suite ( itwenn...).

Juste avec transform.up

Code : Tout sélectionner

transform.LookAt(transform.up= Vector3.up);
le perso est bien vertical mais ne s'oriente pas selon le path
Z012.jpg
Z012.jpg (214.1 Kio) Consulté 3324 fois
Sur unity scripting, pour lookAt, il faut une cible et un paramètre vector.

J'ai ajouter la cible , pour moi c'est Donc Itween.....
Mais le résultat est le même ,le perso est bien vertical mais ne s'oriente pas selon le path

Code : Tout sélectionner

transform.LookAt((iTween.PointOnPath(tabtList, fraction + 0.1f)),transform.up= Vector3.up);
Dernière édition par freepl le 14 Nov 2019 12:37, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par boubouk50 » 14 Nov 2019 12:35

Ok. Je vois maintenant où il y a mauvaise compréhension.
Quand je dis après, je parle après la ligne.
Tu laisses ton LookAt (iTween) pour orienter ton personnage face au path. Puis tu verticalises ton perso.

Code : Tout sélectionner

//Orientation face au path
transform.position = iTween.PointOnPath (tabtList, fraction);
//Rendre vertical le personnage
transform.up= Vector3.up;
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par freepl » 14 Nov 2019 13:34

avec ta modif, le perso est enfin droit mais il ne se tourne pas dans la direction du path.
J'explique.
En gros j'ai un path plat qui va du nord au sud(1) et un autre du sud au nord avec escalier(2).

A la création des persos je crois qu'ils sont créées "face au nord".

Pour ceux qui suivent le path 2 vers le nord, il sont tournés dans le bon sens ( femme en gris )
Pour les autres ils sont tournés vers le nord, donc dos au déplacement ( femme en rouge)

la femme en bleue regarde dans le sens de son déplacement
La femme en rouge regarde "le dos" de son déplacement.
ceci est valable pour tous les objets, y compris les vl ( mais pour eux je garderai le script d'origine)

Image à t=0
Z014.jpg
Z014.jpg (289.62 Kio) Consulté 3289 fois
image à t + 2
Z015.jpg
Z015.jpg (101.03 Kio) Consulté 3289 fois

Edit
Je viens de tester en faisant tourner de 180° un chemin, c'est le bon raisonnement. Le persos gardent leur orientation

J'ai testé aussi un chemin à 90°.
Les persos gardent leur orientation ( de création ?).
Ils sont verticaux

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par freepl » 14 Nov 2019 16:21

Je cherche de ce coté mais je ne trouve pas : lookAt dans la direction opposé.

https://answers.unity.com/questions/132 ... ction.html

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par boubouk50 » 14 Nov 2019 16:40

Je me suis relu, et j'ai vu que je n'avais pas repris la bonne ligne:
il faut mettre:

Code : Tout sélectionner

transform.up= Vector3.up;
ou

Code : Tout sélectionner

transform.rotation = Quaternion.FromToRotation(Vector3.up, Vector3.up);
après

Code : Tout sélectionner

transform.LookAt(iTween.PointOnPath(tabtList, fraction + 0.1f));
et pas après

Code : Tout sélectionner

transform.position = iTween.PointOnPath (tabtList, fraction);
(qui ne contient AUCUN LookAt, d'ailleurs).
Par contre, veille à repartir du code initial.
Aussi, il se peut que le code que je t'ai donné pour redresser le personnage verticalement ne soit pas fonctionnel. Il se pourrait qu'il réoriente le plan XZ.
Dans ce cas, l'idée est toujours valide, mais pas l'implémentation. Il faudrait voir à faire une rotation sur l'axe local X right (en admettant Y up et Z forward) pour l'aligner avec le Y up World, donc calculer l'angle par exemple et l'affecter.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par freepl » 14 Nov 2019 16:57

Merci de continuer m'aider.
Le résultat est identique.
J'ai tourné un path de 90°, le perso le suit bien mais ne s'oriente pas selon le path.

Les petites barres verticales sont le path de l'escalier tourné de 90°, les perso sont orientés vers "leur nord".
Z016.jpg
Z016.jpg (60.04 Kio) Consulté 3235 fois
Est-il possible, chose que je ne sais VRAIMENT pas faire, de récupérer les infos des transforms et simplement de remplacer par transform.up ?

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6185
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Personnage monte escalier mais sur path et doncmvt en dent de scie

Message par boubouk50 » 14 Nov 2019 17:16

Donc, si tu enlèves la ligne, ils sont dans le bon axe mais pas verticaux, si tu la remets, il sont verticaux mais pas dans le bon axe?
Dans ce cas, c'est la ligne que je t'ai donné qui ne fait pas ce qu'on lui demande, je pensais qu'elle n'affecterait que le up du personnage alors qu'elle affecte tous les axes.
J'en reviens donc à ce que j'ai dit précédemment, il faut le réorienter d'une autre manière.
Soit en corrigeant le LookAt () soit en effectuant une rotation de ton personnage.
Pour corriger le LookAt (), il faudrait faire en sorte que le point donné soit sur le même plan horizontal, donc que la position Y soit identique à celle de ton personnage.
Quelque chose comme ça alors:

Code : Tout sélectionner

Vector3 direction =iTween.PointOnPath(tabtList, fraction + 0.1f);
direction.y = this.transform.position.y;
transform.LookAt(direction);
Tu remplaces donc le LookAt () actuel par ces 3 lignes. N'oublie pas de supprimer la ligne que je t'ai faite rajouter.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Scripting »