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
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
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
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.