Page 1 sur 1

Faire bouger un objet d'un point A à un point B

Publié : 26 Mars 2015 18:05
par Azlan
Bonjour,
je suis débutant sur Unity et je voudrais faire bouger un objet R vers un autre objet V lorsque j'appuie sur l'objet V :
-J'ai rajouter un composant button sur V qui lorsque j'appuie dessus théoriquement appelle une fonction AllerA() cependant cela ne declenche pas la fonction quand j'appuie sur le personnage , il faut que j'appuie sur espace pour que ca marche
-Dans la fonction appeler par le button j'ai mis :

Code : Tout sélectionner

public void aller()
	{
		while (V.transform.position.x>transform.position.x)
		{
			transform.Translate((V.transform.position - transform.position).normalized * Time.deltaTime*0.001F);
		}
	}
Cependant l'objet R se teleporte directement a coté de l'objet V

Pourriez me dire ce qui cloche ?
Merci

Re: Faire bouger un objet d'un point A à un point B

Publié : 26 Mars 2015 18:20
par boubouk50

Code : Tout sélectionner

while (V.transform.position.x>transform.position.x)
Ca signifie: Tant qu'il n'a pas atteint la position finale alors on le bouge. Tous ces calculs ne sont effectués que dans une seule frame!
C'est dans la fonction Update(), fonction appelée une fois par frame, que tu dois faire ta translation petit à petit. Pas de boucle while mais un if.

Re: Faire bouger un objet d'un point A à un point B

Publié : 26 Mars 2015 21:16
par cayou66

Re: Faire bouger un objet d'un point A à un point B

Publié : 04 Avr 2015 13:37
par Orkad
Il faut absolument que tu utilise la fonction Update() dans ce cas là, le while est à bannir car il ne rafraîchit pas la position de l'objet. Je te conseil de créer une classe "Movement3D" qui utilise:
soit Vector3.MoveTowards http://docs.unity3d.com/ScriptReference ... wards.html
soit Vector3.Lerp si tu veux un mouvement lisse http://docs.unity3d.com/ScriptReference ... .Lerp.html

Voici le script écrit par mes soins, j'espère qu'il pourra être utile à d'autres :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class Movement3D : MonoBehaviour {
    public Vector3 wantedPositon;         //La position désirée
    public bool useLerp = false;         //Si on utilise la fonction Lerp dans notre Update
    public float speed = 10f;            //La vitesse de déplacement si on utilise MoveToward
    public float damping = 1f;            //Le facteur du lerp
    //damping = 0 -> L'ojet ne se déplacera pas
    //damping = 1000 -> L'objet ira à la position instantanement
    
    void Start () {
        wantedPositon = transform.position; //Pour que l'objet soit à sa place initiale dans la scene
    }
    
    void Update() {
        if(useLerp)
            transform.position = Vector3.Lerp(transform.position,wantedPositon,damping*Time.deltaTime);
        else
            transform.position = Vector3.MoveTowards(transform.position,wantedPositon,speed*Time.deltaTime);
    }
    
    //Fonction que tu utilisera avec tes autres scripts
    public void MoveTo(Vector3 position, bool lerped = false){
        useLerp = lerped;
        wantedPositon = position;
    }
}

Re: Faire bouger un objet d'un point A à un point B

Publié : 20 Oct 2020 12:16
par fireboss_05
Bonjour, j'ai essaayé ton script et je n'ai pas réussie a l'utiliser... je ne comprend pas sur qui le mettre, qui appel la fonction etc... (et je ne sais pas comment marche le script aussi...)
merci si tu arrives a m'aider :D

Re: Faire bouger un objet d'un point A à un point B

Publié : 20 Oct 2020 13:52
par boubouk50
Salut,
(beau déterrage: +5 ans)
Il faut mettre ce script sur l'objet que tu veux déplacer.
Pour l'utiliser, il faut appeler la fonction MoveTo (Vector3 position, bool lerped = false) depuis un autre script ou le Start() par exemple. Tu renseignes la position (et le lerped mais ce n'est pas obligatoire) et ton objet commencera à se déplacer vers cette position à partir du moment de l'appel.

Re: Faire bouger un objet d'un point A à un point B

Publié : 20 Oct 2020 18:23
par fireboss_05
Hey merci beaucoup, et je m'excuse pour le déterrage ^^, je n'ai pas vu de mention a ce sujet dans les règles alors je me suis permis. Je suis sur que des gens en auront besoin après moi :D

Re: Faire bouger un objet d'un point A à un point B

Publié : 20 Oct 2020 18:28
par Max
C'est un déterrage "utile" à priori, donc il n'y a pas de soucis.
C'est aussi le but du forum, d'avoir accès aux multiples sujets traités, et y trouver bien souvent des éléments de réponses à ses propres soucis/questionnements, même au sein de sujets datant de plusieurs années ;)

Re: Faire bouger un objet d'un point A à un point B

Publié : 21 Oct 2020 00:54
par jmhoubre
Bonsoir,

je complète ex précisant que certaines méthodes ne semblent pas être appelées (cela trompe même Visual Studio qui les colorie comme si elles ne servaient pas). Ces méthodes sont entre autres Start, les Update, et les OnSomething (OnMouseOver, OnTrigger, ...).
C'est Unity qui se charge de les appeler quand certains événements surviennent : par exemple, OnMouseOver est appelée à chaque frame SI la souris est au-dessus d'un Collider.