Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C#]détemination du vecteur vitesse

    10 mars 2023 à 1:34:15

    bonjour,

    J'ai réalisé ceci sur Unity:

    https://unity3d.college/2017/07/03/using-vector3-reflect-to-cheat-ball-bouncing-physics-in-unity/

    Dès que j'appuie sur une touche du clavier,un script C# doit me donner le vecteur vitesse de la balle qui rebondit et qui n'a qu'une trajectoire rectiligne.

    Je n'arrive pas à réalisr ce sctipt C#

    Peut-on m'aider?

    merci

    • Partager sur Facebook
    • Partager sur Twitter
      10 mars 2023 à 11:14:18

      Quel est votre problème ?

      Qu'avez-vous déjà codé ?

      Quel modèle d'entré/sortie d'Unity utilisez-vous ?

      etc...

      • Partager sur Facebook
      • Partager sur Twitter
      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
        10 mars 2023 à 12:48:46

        j'avais écrit ce code:

        using System.Collections;
        using System.Collections.Generic;
        using UnityEngine;
        
        //ce script a pour but lors de l'appui d'une touche de détecter le vecteur direction que prend un objet,avant que cette dernière ne change à cause du rebond.
        //au cours de sa trajectoire  en supposant que son mouvement est rectiligne
        //probleème : pourquoi la composante_y de V3 est non nulle?(déplacement plan)
        
        public class detect_vecteur : MonoBehaviour
        {
            public GameObject obj;
            //facteur permet de déterminer l'écart temporel entre time et tick
            public float facteur;
            private float timer,time,tick;
        
            Vector3 V1,V2,V3;
        
             void Awake()
            {
                time=Time.time;
               
             }
            // Start is called before the first frame update
            void Start()
            {
                
            }
        
           
        
            // Update is called once per frame
            void Update()
            {timer += Time.deltaTime;
            time=Time.time;
            
            tick=time+facteur*Time.deltaTime;
        
             if (Input.GetKeyDown(KeyCode.I))
              { 
             detect_v();
                }
        
             }
        
              Vector3 detect_v()
             {
               V1=obj.GetComponent<Transform>().position;
              
                if(time>=tick)
               {
                V2=obj.GetComponent<Transform>().position;
               }
             
              
              V3=V2-V1;
              print("--------------");
              print("temps1: "+time);
              print("vecteur1 direction de l'objet: ("+V1.x+" , "+V1.y+" , "+V1.z+")");
              print("temps2: "+tick);
              print("vecteur2 direction de l'objet: ("+V2.x+" , "+V2.y+" , "+V2.z+")");
              print("vecteur3 direction de l'objet: ("+V3.x+" , "+V3.y+" , "+V3.z+")");
              print("--------------");
              return V3;
           
            }
        }
        

        je n'arrive pas à le corriger.

        A chaque appui de la touche I,V2 est toujours (0,0,0)

        • Partager sur Facebook
        • Partager sur Twitter
          12 mars 2023 à 22:35:24

          >//probleème : pourquoi la composante_y de V3 est non nulle?(déplacement plan)

          Les calculs avec des "rigidbody" ne sont pas exactes arbitrairement.

          Il y a des approximations. Il faut activer des verrouillages selon des axes pour bloquer des composants de rigidbodies dans des plans.

          Pour V2 toujours égale à 0, bin moi, je vois aucun moyen de passer à la ligne 51 car la condition est toujours fausse, à moins que facteur soit négatif.

          • Partager sur Facebook
          • Partager sur Twitter
          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.

          [C#]détemination du vecteur vitesse

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown