[RESOLU][DB-AL] Gestion d'inertie et de rotation entre 2 GameObject

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
boubouk50
ModoGenereux
ModoGenereux
Messages : 6221
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [RESOLU][DB-AL] Gestion d'inertie et de rotation entre 2 GameObject

Message par boubouk50 » 22 Fév 2017 10:48

Salut,
Remarques:
- La fonction Find () est très gourmande, stocke le Slider récupéré plutôt.
- Pareil pour le GetComponent (). Récupère le Rigidbody (et le focusController) une fois au Start (), et accèdes-y quand tu veux.
- Quelle est la différence entre distanceTarget et speedTarget? Elles sont récupérées au même endroit, ce sont donc les mêmes valeurs.
"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

Avatar de l’utilisateur
Wydman
Messages : 7
Inscription : 31 Jan 2017 14:28

Re: [RESOLU][DB-AL] Gestion d'inertie et de rotation entre 2 GameObject

Message par Wydman » 22 Fév 2017 13:40

Okay j'ai honte ^^

Merci pour tes précieuses remarques, il ne m'est même pas venu a l'esprit que ça pouvais avoir un impact négatif, pourtant c'est plutôt logique...

du coup j'ai stocké les variables de cette façon ( tout marche très bien, mais je préfère poster mon code au cas ou^^)

Code : Tout sélectionner


    AudioSource Audio;
    Rigidbody rigidBody;
    Slider sliderDistance;
    focusController focusController;




    void Start()
    {
        Audio = GetComponent<AudioSource>();
        rigidBody = GetComponent<Rigidbody>();
        sliderDistance = GameObject.Find("SliderDistance").GetComponent<Slider>();
        focusController = player.GetComponent<focusController>();
    }





 if (focusController.cameraFocus == true)
        {
            sliderDistance.interactable = true;

...



void Update()
    {

               target = focusController.rotationPointTransform;
               forward = transform.TransformDirection(Vector3.back); 
               dir = target.transform.position - transform.position;
               side = Vector3.Cross(dir, forward); 




            if (velocity < speedTarget)
            {
                rigidBody.drag = 0f;
                rigidBody.AddForce(dir.normalized * distanceTarget *100* Time.deltaTime);
                cross = Vector3.Cross(dir, side); 
                rigidBody.AddForce(cross.normalized * speedTarget *100* Time.deltaTime); 

            }

            else if (velocity > speedTarget)
            {
                rigidBody.drag = 2f;
            }
            else
            {
                rigidBody.drag = 0f;
            }


            transform.LookAt(focusController.positionPointVector);



}




pour les Sliders, à la base je voulais me servir de deux Sliders pour donner un "effet" aux orbites malheureusement c'est un peu complexe niveau ergonomie pour le joueur sur mobile, mais l'idée me plait bien, alors en attendant de me pencher a nouveau dessus, j'ai utilisé le même Slider pour les 2 variables. Je n'ai pas posté mon annotation pense-bête avec le code désolé ^^

Répondre

Revenir vers « (C#) CSharp »