[RESOLU] Interpolation (Lerp)

Pour les scripts écrits en C#
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
JohnyBoy
Messages : 91
Inscription : 22 Mars 2017 20:23

[RESOLU] Interpolation (Lerp)

Message par JohnyBoy » 27 Juil 2017 11:16

Bonjour je cherche un moyen de déplacer un objet d'un point A vers un point B mais avec B en mouvement.

Vous allez me dire, utilise la méthode Vector3.Lerp ou encore Mathf.Lerp.

Donc voila mon code :

Code : Tout sélectionner

transform.position = new Vector3 (Mathf.Lerp(transform.position.x,obj.transform.position.x,0.1f), Mathf.Lerp(transform.position.y,obj.transform.position.y,0.1f), obj.transform.position.z-3);
Seulement voilà, ce site me dit que j'utilise mal la méthode et il à raison car mon obj est en permanence en mouvement et le transform n'est autre que ma caméra. Du coup bah le déplacement n'est pas tout à fait fluide et provoque des saccades.

https://translate.google.fr/translate?h ... rev=search

Je vous invite d'ailleurs à visiter ce lien, c'est très intéressant !

Quelqu'un aurait-il une solution ou une idée ?
Dernière édition par JohnyBoy le 28 Juil 2017 11:40, édité 2 fois.

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

Re: Interpolation (Lerp)

Message par boubouk50 » 27 Juil 2017 12:44

Oui, ça paraît normal.
Il vaudrait mieux que tu crées un système de déplacement normal vers un point. La point A en soi, ce devrait être le gameObject lui-même pas un point fixe, simplement, à l'initialisation, ce gameObject viendra se positionner à ce point.
Ensuite, très simplement, tu calcules le vecteur directionnel entre ton gameObject et le point B, puis tu déplaces ton gameObject de X, comme tu déplacerais un personnage en fait.
"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

JohnyBoy
Messages : 91
Inscription : 22 Mars 2017 20:23

Re: Interpolation (Lerp)

Message par JohnyBoy » 27 Juil 2017 13:17

Je te remercie, je vais tester ça.

JohnyBoy
Messages : 91
Inscription : 22 Mars 2017 20:23

Re: Interpolation (Lerp)

Message par JohnyBoy » 27 Juil 2017 19:53

Y a rien à faire je ne sais pas comment utiliser un Lerp(a,b,t) ou b change pendant le Lerp dans l'update.
Le mouvement (quoi que je fasse) saccade.

JohnyBoy
Messages : 91
Inscription : 22 Mars 2017 20:23

Re: Interpolation (Lerp)

Message par JohnyBoy » 27 Juil 2017 20:21

Bon bah j'ai rien dis smoothDamp est la solution :mrgreen:

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

Re: Interpolation (Lerp)

Message par boubouk50 » 28 Juil 2017 08:56

Tu n'as pas besoin d'utiliser le Lerp.
Position B - Position du GameObject = Vecteur directionnel
(Si besoin) Rotate () en direction ou LookAt ()
Translate () sur vecteur directionnel à la vitesse définie.

Tout simplement comme un déplacement. Si tuas trouvé autrement tant mieux. Pense à passer le sujet en RESOLU par contre stp.
"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
Aiyor
Messages : 24
Inscription : 14 Juin 2017 12:08

Re: Interpolation (Lerp)

Message par Aiyor » 28 Juil 2017 10:27

J'avais une question un peu subsidiaire du coup suite à ton problème.
J'ai moi-même dû faire un script hier de déplacement des ennemis d'un point A vers mon Player qui est en déplacement. Et j'ai simplement utilisé le NavMeshAgent avec un Setdestination pointant vers mon Player...Est-ce une solution coûteuse et qu'il faut éviter d'utiliser car tu n'en a pas parlé? (Peut être que ton besoin était différent?)

JohnyBoy
Messages : 91
Inscription : 22 Mars 2017 20:23

Re: Interpolation (Lerp)

Message par JohnyBoy » 28 Juil 2017 11:38

Non mon besoin est différent.

Si tu veux j'ai un objet1 qui slide de gauche à droite ou droite à gauche et derrière j'ai un autre objet2 qui suit objet1.

Mon objet1 lui slide rapidement et l'objet2 derrière doit le suivre dans le slide (sur l'axe x) mais moins vite.

Merci beaucoup boubouk c'est comme ça que j'avais fait finalement ;)

Pour ce qui est du NavMeshAgent je suppose que c'est assez coûteux car beaucoup de calcul.

Répondre

Revenir vers « (C#) CSharp »