[RESOLU] Changement de couleur de fond

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
Fabounch
Messages : 2
Inscription : 26 Nov 2017 20:54

[RESOLU] Changement de couleur de fond

Message par Fabounch » 24 Avr 2018 18:48

Bonjour !

Y a quelque chose que j'ai du mal a comprendre au niveau du Color.Lerp....
Dans la documentation " https://docs.unity3d.com/ScriptReferenc ... Color.html "
Ils utilisent un Mathf.PingPong mais pourquoi ?

J'ai fait plusieurs tests (je les ai peut-être mal fait mais je ne crois pas...)
-Avec :

Code : Tout sélectionner

if(Input.GetKey(KeyCode.G))
        {
            t = Mathf.Lerp(Time.time, duration, 0) / duration;
            cam.backgroundColor = Color.Lerp(color1, color2, t);
        }
Je suis obligé d'appuyer plusieurs fois afin d'obtenir un changement de couleur et encore il n'est pas fluide du tout ce changement....
- Avec des conditions non plus

Code : Tout sélectionner

 if (test == true)
        {
            float t = Mathf.PingPong(Time.time, duration) / duration;
            cam.backgroundColor = Color.Lerp(color1, color2, t);
            test = false;
        }
        if(Input.GetKey(KeyCode.G))
        {
            test = true;

    }   


Ces codes peuvent paraître bizarre je pense lol ^^

Je viens de réaliser un dernier test avec une coroutine, cela a fonctionné mais cependant je ne vois pas l'utilité de Mathf.PingPong pour changer la couleur seulement une fois et non un "aller-retour"
Je devrai remplacer Mathf.PingPong par quoi ?

Code : Tout sélectionner

 private void OnTriggerEnter2D(Collider2D coll)
    {
        if(coll.gameObject.tag == "Zone2")
        {
            StartCoroutine(ColourChange());
            ZoneChange = true;
        }
    }



    IEnumerator ColourChange()
    {
        while (ZoneChange == true)
        {
            float t = Mathf.PingPong(Time.time, duration) / duration;
            cam.backgroundColor = Color.Lerp(color1, color2, t);
            yield return null;

        }

    }
voici la Coroutine pour les curieux :p
.
 ! Message de : Max
Utilisez les balises code SVP
Merci de lire la Netiquette.
Dernière édition par Fabounch le 30 Juil 2018 20:35, édité 1 fois.

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

Re: [DB-AL] Changement de couleur de fond

Message par Max » 24 Avr 2018 19:13

Bonsoir,

Le Mathf.PingPong permet un 'aller/retour' de la valeur de t, entre 0 et 1 dans le cas présent.
Dans tes codes, je ne comprends pas trop pourquoi le t = Mathf.Lerp(Time.time, duration, 0) / duration;.
Maintenant, si ton but est juste de faire une transition d'une couleur à l'autre, alors une coroutine ferait en effet plutôt bien l'affaire.
Genre (en restant sur les définitions du code exemple de ton lien vers la doc):

Code : Tout sélectionner

public class TestBackCamera : MonoBehaviour
{
    public Color color1 = Color.red;
    public Color color2 = Color.blue;
    public float duration = 0.5f;

    Camera cam;

    void Start()
    {
        cam = GetComponent<Camera>();
        cam.clearFlags = CameraClearFlags.SolidColor;
        StartCoroutine(BackColorChange());
    }

    IEnumerator BackColorChange()
    {
        float t = 0;
        while (t<1.0f)
        {
            t += Time.deltaTime * duration;
            cam.backgroundColor = Color.Lerp(color1, color2, t);
            yield return null;
        }
    }
}
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

Fabounch
Messages : 2
Inscription : 26 Nov 2017 20:54

Re: [DB-AL] Changement de couleur de fond

Message par Fabounch » 24 Avr 2018 19:30

Pardon...J'ai pas pensé à lire la nétiquette avant de poster mon message
Promis je ferai attention la prochaine fois :p

Fais pas attention à ce fameux t = Mathf.Lerp(Time.time,duration,0) / duration;
j'avais bidouillé certains paramètres...

Merci, Je cherchais beaucoup trop compliqué !

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

Re: [DB-AL] Changement de couleur de fond

Message par Max » 24 Avr 2018 19:34

Fabounch a écrit :
24 Avr 2018 19:30
Merci, Je cherchais beaucoup trop compliqué !
je pense oui ;)

Si tu penses que c'est ok, passe ton sujet en résolu (édition du titre du message initial).
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

Répondre

Revenir vers « (C#) CSharp »