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

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
Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

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

Message par Kaloverian » 25 Jan 2022 00:20

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

Avatar de l’utilisateur
Max
Messages : 8763
Inscription : 30 Juil 2011 13:57
Contact :

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

Message par Max » 25 Jan 2022 11:40

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 ?
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

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

Message par Kaloverian » 25 Jan 2022 17:59

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

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

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

Message par boubouk50 » 31 Jan 2022 16:25

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

Répondre

Revenir vers « (C#) CSharp »