Page 1 sur 1

prendre une position d'un objet : fonction particulière

Publié : 25 Jan 2022 00:20
par Kaloverian
bonjour,

D'abord,il me semble qu prendre la position d'un objet peut se faire de 2 manière s dont je ne vois pas encore la différence:

Code : Tout sélectionner

obj.transform.position;

Code : Tout sélectionner

obj.GetComponent>Transform>().postion;
Ensuite,mon but est de créer un simple script C# réalisant ceci:
Pour translater mon objet,je lui attache un script move.cs(j'appui sur une touche spécifique et l'objet avance ou accélère d'une certaine vitesse et dans une direction imposée(par exemple (0,0,1)
Depuis temps début du jeu lancé jusqu'au temps tim,l'objet peut etre translaté par move.cs
lAprès le temps tim ,l'objet ne peut etre translaté : il est bloqué !
Voici la fonction encore incorrecte du script qui retourne un vecteur correspondant à la position de l'objet:

Code : Tout sélectionner

   Vector3  BlockTakePositionAtTime(GameObject obj,float timl)
     {
    
       Vector3 V=Vector3.zero;
       Vector3 V1=Vector3.zero;
       float tp=0;
       tp=Time.time;
       
   //translation débloquée
     if(tp<tim)
        {
            V=obj.transform.position;
            
       }
       
     //translation bloquée
    else
        { //prise de la position de l'objet au temps tim
          V1=obj.GetComponent<Transform>().position;
          
          //V est affectée de cette prise de position puis n'est plus modifié
           V=V1;
            
         }
         
      return V;
     }
On voit l'idée de cette fonction qui est encore incorrecte.
Je souhaite que m'aide à l'implémenter correctement.

merci de votre aide

Re: prendre une position d'un objet : fonction particulière

Publié : 25 Jan 2022 11:40
par Max
Bonjour,
Kaloverian a écrit :
25 Jan 2022 00:20
D'abord,il me semble qu prendre la position d'un objet peut se faire de 2 manière s dont je ne vois pas encore la différence:

Code : Tout sélectionner

obj.transform.position;

Code : Tout sélectionner

obj.GetComponent>Transform>().postion;
il n'y a pas de différence. Tu n'as pas besoin de passer par un GetComponent() pour accéder au Tranform d'un GameObject. Cela alourdi ton code sans raison. Comme le précise la doc, transform est une propriété de la classe GameObject.

Kaloverian a écrit :
25 Jan 2022 00:20
Ensuite,mon but est de créer un simple script C# réalisant ceci:
Pour translater mon objet,je lui attache un script move.cs(j'appui sur une touche spécifique et l'objet avance ou accélère d'une certaine vitesse et dans une direction imposée(par exemple (0,0,1)
Depuis temps début du jeu lancé jusqu'au temps tim,l'objet peut etre translaté par move.cs
lAprès le temps tim ,l'objet ne peut etre translaté : il est bloqué !
Pour 'translater' un GameObject, pourquoi ne pas utiliser les fonctions de l'API qui sont à ta disposition, en particulier Translate ?

Re: prendre une position d'un objet : fonction particulière

Publié : 25 Jan 2022 17:59
par Kaloverian
la fonction Translate est dans le script move.cs bien sûr:elle est déjà utilisée dans ce script.
L'objet aura 2 scripts attachés :move.cs et celui que je n'arrive pas à implémenter

Re: prendre une position d'un objet : fonction particulière

Publié : 31 Jan 2022 16:25
par boubouk50
Pour arrêter la translation tu peux tout aussi bien désactiver le script de déplacement ou bien simplement passer par un booléen et une condition.