[DB] un Lerp qui ne Lerp pas

Modérateurs : Administrateurs Suppléants, Community Manager

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
Kawacemy
Messages : 2
Inscription : 24 Avr 2019 01:30

[DB] un Lerp qui ne Lerp pas

Message par Kawacemy » 24 Avr 2019 06:27

Bonjour tout le monde, :hello:
J'essaie de créer un objet qui se déplace d'un point A au point B une fois cliqué dessus, j'ai créé... ou plutôt bricolé ce Script, qui apparemment ne marche pas. :triste1:
Si quelqu'un a une solution, toutes les propositions sont les bienvenues. :super:

Code : Tout sélectionner

 
    public GameObject sphere;
    public Transform start;
    public Transform end;
    private float t = 0f;

    void OnMouseDown()
    {
        sphere.transform.position = Vector3.Lerp(start.position, end.position, t += 0.1f * Time.deltaTime);
    }
Merci et a++

Avatar de l’utilisateur
DevAmat
Messages : 227
Inscription : 23 Nov 2016 11:50

Re: [DB] un Lerp qui ne Lerp pas

Message par DevAmat » 24 Avr 2019 09:26

Cette fonction doit être placée dans un Update() par exemple.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 5013
Inscription : 28 Avr 2014 11:57
Localisation : Toulouse

Re: [DB] un Lerp qui ne Lerp pas

Message par boubouk50 » 24 Avr 2019 12:52

La fonction Lerp () est ce qu'il te faut (entre autres possibilités).
Elle permet de passer d'une donnée A à une donnée B par une interpolation linéaire (ligne droite) selon un interpolant.
C'est la notion d'interpolant qu'il faut comprendre. Le résultat d'un Lerp en est dépendant d'après la fonction:
lerp = a*(1-t) + b*t avec a la valeur de départ, b celle d'arrivée et t l'interpolant.
A t=0 on obtient lerp = a
A t=1 on obtient lerp = b
et pour toutes les autres valeurs entre 0 et 1 de t, on obtient une valeur intermédiaire.
Il faut donc faire varier progressivement t de 0 à 1 pour passer de a à b.

Ici, tu n'intègres pas la notion de temps dans l'utilisation de la fonction, tu ne vas donc récupérer qu'une seule valeur. Il faut donc appeler la fonction Lerp () au cours du temps pendant un temps défini pour que t puisse augmenter petit à petit.

Pour se faire, il va te falloir comprendre comment fonctionne une couroutine que tu appelleras dans OnMouseDown ().
Elle te permettra de lancer la fonction Lerp () au cours du temps.
"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

Kawacemy
Messages : 2
Inscription : 24 Avr 2019 01:30

Re: [DB] un Lerp qui ne Lerp pas

Message par Kawacemy » 25 Avr 2019 15:24

Un grand merci pour vos réponses, je vais m'informer encore plus sur les Coroutine et je vous tiens au courant.
MERCI encore :super:

Répondre

Revenir vers « (C#) CSharp »