[RESOLU] Changer un paramètre progressivement

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Derek82
Messages : 40
Inscription : 28 Mai 2020 16:36

[RESOLU] Changer un paramètre progressivement

Message par Derek82 » 14 Août 2022 17:53

Bonjour,

Je débute et je me lance sur un petit jeu de plafeforme 2D.

pour les besoins de mon jeu, je voudrais passer d'une valeur à une autre, progressivement :
passer d'une valeut de 10 à 5 en 3 secondes par exemple.

Il s'agit d'un travelling avant sur mon décors, avec une caméra orthographique déclenchée par l'entrée du joueur dans une zone délimitée par un collider2D.

j'arrive à obtenir ce changement de valeur, mais sans transition, de 10 à 5.
J'ai essayé avec mathf.lerp et pas mal de tutos que j'ai vraiment du mal à suivre avec beaucoup de code pour quelque chose qui me semble pourtant très simple ?

voici mon code à toute fin utile :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;

public class Zoom : MonoBehaviour
{
    public CinemachineVirtualCamera Vcam;
    

    private void OnTriggerEnter2D(Collider2D col)
    {
        if (col.gameObject.name == "Player")
        {
          Vcam.m_Lens.OrthographicSize = Mathf.Lerp(10, 5, 1);           
        }        
    }

    private void OnTriggerExit2D(Collider2D col)
    {
        if (col.gameObject.name == "Player")
        {
            Vcam.m_Lens.OrthographicSize = Mathf.Lerp(10, 10, 1);
        }
    }
}
Voilà si quelqu'un à la patience et la gentillesse de m'expliquer ce que je peux faire ?
Merci ! ;)

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

Re: Changer un paramètre progressivement

Message par Max » 14 Août 2022 18:13

Bonjour,

Tu dois employer la fonction Math.Lerp dans l'Update.
La donc donne un exemple simple qui devrait t'aider.
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

Derek82
Messages : 40
Inscription : 28 Mai 2020 16:36

Re: Changer un paramètre progressivement

Message par Derek82 » 14 Août 2022 19:19

Merci Max.

J'avais parcouru la doc, mais quelque chose m'echape sans doute :

tout marche bien, si j'applique le code de la doc sur un carré par exemple : il se déplace bien entre les valeurs min et max selon le facteur et dans le temps.
mais quand j'essaie d'appliquer ça à ma caméra virtuelle, ça ne plait pas au logiciel.
Je ne dois pas m'y prendre comme il faut mais je ne comprends pas ce qu'il faut faire :

je change

Code : Tout sélectionner

transform.position = new Vector3(Mathf.Lerp(minimum, maximum, t), 0, 0);
en :

Code : Tout sélectionner

CinemachineVirtualCamera.m_Lens.OrthographicSize = new Vector3(Mathf.Lerp(minimum, maximum, t), 0, 0);
Et ça ne plaît pas à Unity...
Je voudrais appliquer la fonction Mathf.lerp sur le paramètre de la taille de la caméra virtuelle, donc.

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

Re: Changer un paramètre progressivement

Message par Max » 14 Août 2022 20:35

Quand c"est comme cela, poste les messages d'erreurs.
Derek82 a écrit :
14 Août 2022 19:19

Code : Tout sélectionner

CinemachineVirtualCamera.m_Lens.OrthographicSize = new Vector3(Mathf.Lerp(minimum, maximum, t), 0, 0);
Et ça ne plaît pas à Unity...
C'est normal, CinemachineVirtualCamera est un type de classe. A la place, tu dois fournir une référence à un objet de ce type instancié et qui se trouve dans ta scène.
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
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Changer un paramètre progressivement

Message par jmhoubre » 14 Août 2022 21:42

Bonjour,

si tu utilises Cinemachine,, le principe est d'utiliser 2 (ou plus) caméras virtuelles :
* celle que tu utilises en ce moment,
* et une seconde que tu places au point d'arrivée de ton traveling. Soit dans l'inspecteur, soit par code.
Ensuite tu changes (par code) la priorité des caméras, et tu règles le blend pour qu'il te convienne.

Tu fais comme tu veux, mais il me semble que si tu débutes, tu devrais commencer par des choses plus simples. Quel tuto suis-tu ?

Derek82
Messages : 40
Inscription : 28 Mai 2020 16:36

Re: Changer un paramètre progressivement

Message par Derek82 » 14 Août 2022 22:00

Merci à vous deux !
A la place, tu dois fournir une référence à un objet de ce type instancié et qui se trouve dans ta scène.
D'accord. je ne crois pas que je sache vraiment faire ça par contre. :0

Je vais essayer de me rabattre sur la solution de jmhoubre.
Je ne sais pas vraiment coder, donc ça me semble peut-être plus abordable.

Je suis plusieurs tutos pour essayer de faire mon jeu (un jeu d'aventure 2D dans le genre "narita boy", "Inside", "AnotherWorld" mais en beaucoup plus modeste, je ne cherche qu'à m'amuser...).
je personnalise un modèle fourni par ce youtubeur : https://www.youtube.com/watch?v=fZBEnlT ... homasBrush

il n'y est pas du tout question de zoomer à aucun moment, mais j'envisage qu'à plusieurs moments de mon jeu il pourrait y avoir des mouvements de caméra pour élargir le plan et découvrir un vaste décors et à d'autre au contraire, se rapprocher d'un point d'intérêt, d'un objet... mais j'aimerai des mouvements de caméra fluides et pas des "cut" brutaux ou des mouvements brutaux... voilà, je sais que c'est un peu ambitieux pour mon niveau (en fait je n'ai pas vraiment de niveau, je suis un amateur et mes notions de codes sont plus qu'approximative)

Derek82
Messages : 40
Inscription : 28 Mai 2020 16:36

[RESOLU] Mouvement de caméra progressif

Message par Derek82 » 15 Août 2022 01:39

J'ai réussi à obtenir ce que je voulais avec la méthode que tu m'as suggeré Jmhoubre.
ça me correspond mieux, parcequ'il y a moins de code et pour autant ça laisse beaucoup plus de choix pour placer le second cadrage qu'un simple zoom, comme je cherchais à faire par ailleurs (très agréable de passer d'un cadrage rapproché à une vue large qui monte en simulant un mouvement de grue cinéma).

Pour ceux qui passerait après moi j'ai suivi ce tutoriel :
https://www.youtube.com/watch?v=Ri8PEbD ... nel=samyam
j'ai juste fait un code différent à la fin, plus simple, ne maitrisant pas les InputAction...

Merci !
:)

Répondre

Revenir vers « Scripting »