petit script Timer ne fonctionne pas : pourquoi?

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
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

petit script Timer ne fonctionne pas : pourquoi?

Message par Kaloverian » 21 Nov 2021 17:26

bonjour,

Inspiré par ce petit tuto:
https://www.youtube.com/watch?v=Unkj6QDhC1s

j'ai à peu près copié le script du tuto qui ne fonctionne pas:pourquoi?

Code : Tout sélectionner

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


public class Timer : MonoBehaviour
{
  

    float time,tick;
    public float TimeInterval=5f;

  

    void Awake()
    {
        time=Time.time;
        tick=TimeInterval;

     }

    // Start is called before the first frame update
    void Start()
    {
        
    }

    
      
    // Update is called once per frame
    void Update()
    {    
      
        time=Time.time;

        
   
       if (time==tick)
       { 
           tick=time+TimeInterval;
           
           print("hello");
      
       }
        
  }
     

    
}
Rien ne s'affiche dans ma console malgré print("hello").
J'espérais que hello s'affiche tous les TimeInterval

merci de votre aide

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

Re: petit script Timer ne fonctionne pas : pourquoi?

Message par Max » 21 Nov 2021 17:58

Bonsoir,

c'est normal. C'est dû à ta ligne if(time==tick) où tu cherches à faire un test d'égalité sur deux floats, dont l'égalité est extrêmement aléatoire. On évite ce genre de chose (sujet qui revient souvent ici sur le forum).
D’ailleurs dans le tuto ce n'est pas pour rien qu'il "transtype" en int, ce qui est un peu lourdingue d'ailleurs (après il le justifie peut-être dans la vidéo), vu qu'il suffit d'écrire if(time>tick) pour rendre le code fonctionnel.
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
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: petit script Timer ne fonctionne pas : pourquoi?

Message par Kaloverian » 21 Nov 2021 22:31

alors je suppose que dans tous les langages de programmation,l'égalité entre 2 floats ne fonctionne pas?

autre question du genre
Comment présenter un script de manière que l'update s'execute après un laps de temps choisi?

Code : Tout sélectionner

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


public class  Update_retarde : MonoBehaviour
{
    public float TimeInterval=5f;

   

    void Awake()
    {
        time=Time.time;
        tick=TimeInterval;

     }

    // Start is called before the first frame update
    void Start()
    {
         print("hello1");
   
    }


 

    // Update is called once per frame
    void Update()
    {    
     
        time=Time.time;

        
       //il faut executer Random à certains laps de temps(pas à chaque update)
       if (time>tick)
       { 
           tick=time+TimeInterval;
           
           print("hello2");
       
       }
        
       }

    
}
Dans ce script,hello1 va s'afficher immédiatement

1)comment modifier ce script pour que hello1 s'affiche à partir de 3 secondes?
(et non tout de suite)
2)comment modifier ce script pour que hello2 s'affiche 7 secondes après l'affichage de hello1 ?

merci
Dernière édition par Kaloverian le 22 Nov 2021 16:03, édité 1 fois.

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

Re: petit script Timer ne fonctionne pas : pourquoi?

Message par Max » 22 Nov 2021 08:04

Bonjour,

dans ton script, il semble qu'il manque une } au niveau de ta fonction Start.
Sinon, pour faire ce que tu cherches à faire, je pense que tu aurais intérêt à regarder du coté des coroutines et de WaitForSeconds.
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 »