[Résolu][BD-AL]Clamp angle négatif

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
EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

[Résolu][BD-AL]Clamp angle négatif

Message par EmileF » 24 Avr 2019 15:27

Bonjour, un petit truc qui m'énerve, je n'arrive pas à clamper un angle entre un angle négatif et un angle positif.

Par exemple je voudrais que ma caméra ne s'oriente que de -70° à +70°.
si j'utilise

Code : Tout sélectionner

        
        rot.x = Mathf.Clamp(rot.x, -70, 70);
        transform.localEulerAngles = rot;
l'angle reste entre 0 et 70°, je comprends que passé en dessous de 0 il devient 360-angle.
Mais je ne peux pas mettre entre 290 et 70 car il fait face de l'autre coté.
Je n'arrive pas à régler ce détail.

Y a t'il une astuce? ou quelque chose que je n'ai pas compris?
Dernière édition par EmileF le 24 Avr 2019 19:29, édité 1 fois.
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

EmileF
Messages : 673
Inscription : 18 Mars 2017 19:39

Re: [BD-AL]Clamp angle négatif

Message par EmileF » 24 Avr 2019 16:31

Ha, je me suis un peu trop précipité pour demander de l'aide.

En fouillant un peu plus et un peu mieux, j'ai trouvé une solution:

Code : Tout sélectionner

    public float ClampAngle(float currentValue, float minAngle, float maxAngle )
    {
        float angle = currentValue - 180;

        while (angle < 0)
        {
            angle += 360;
        }

        angle = Mathf.Repeat(angle, 360);

        return Mathf.Clamp(angle - 180, minAngle, maxAngle) + 360 ;
    }
Dans mon cas ça marche très bien.

Je partage, ça peut servir à quelqu'un.

A bientôt
La différence entre l'intelligence et la stupidité est que l'intelligence est limitée.

Répondre

Revenir vers « (C#) CSharp »