[Résolu] Activer système particule après quelques secondes

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Leuprochon
Messages : 60
Inscription : 04 Déc 2017 19:12

[Résolu] Activer système particule après quelques secondes

Message par Leuprochon » 03 Juil 2019 10:54

Bonjour à tous !

Alors voilà, j'aimerais activer mes particules quelques secondes après le lancement de l'application. C'est tout bête mais je ne comprends pas pourquoi ça ne fonctionne pas !

Voici mon script (je suis en RA donc j'ai mêlé le script de détection de l'objet pour l'activation des particules) :

Code : Tout sélectionner

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

public class Particules_Activation : MonoBehaviour, ITrackableEventHandler

{

    private TrackableBehaviour mTrackableBehaviour;

    public ParticleSystem Particules;



    void Start()

    {
        Particules.Stop();

        mTrackableBehaviour = GetComponent<TrackableBehaviour>();

        if (mTrackableBehaviour)

        {

            mTrackableBehaviour.RegisterTrackableEventHandler(this);

        }

    }

    public void OnTrackableStateChanged(

                                    TrackableBehaviour.Status previousStatus,

                                    TrackableBehaviour.Status newStatus)

    {

        if (newStatus == TrackableBehaviour.Status.DETECTED ||

            newStatus == TrackableBehaviour.Status.TRACKED ||

            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)

        {

            // Play  when target is found

            Invoke("StartEmitter", 4);

        }

        else

        {

            // Stop  when target is lost

  

        }

    }

    void StartEmitter()
    {
        Particules.Play();
    }

}
L'idée est qu'après que ma cible soit bien détectée les particules se lancent au bout de 4secondes. Malheureusement ça reste bloqué sur le Particules.Stop() peut importe ce que je fais /;.
D'ailleurs c'est possible de faire Particules.Pause()? Comme ça si je perds mon tracking je pourrai reprendre au même endroit !

A la base j'avais utilisé le système d'Animation Clip mais malheureusement le Culling Mode : Cull Completely ne fonctionne pas /:. Sinon je n'aurai pas eu besoin de scripter tout ça.

Merci bien !
Dernière édition par Leuprochon le 03 Juil 2019 15:01, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Activer système particule après quelques secondes

Message par boubouk50 » 03 Juil 2019 11:10

https://docs.unity3d.com/ScriptReferenc ... ystem.html
Tu peux le constater toi-même dans la doc, la pause est possible.
As-tu regardé avec un Debug.Log () si tu entrais bien dans la fonction?

Également, le souci de ton code, c'est qu'à chaque changement de statut (DETECTED, TRACKED, EXTENDED TRACKING), le Play () des particules est demandé dans 4 secondes alors que tu ne le veux peut-être qu'une seule fois, à la première détection.
"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

Leuprochon
Messages : 60
Inscription : 04 Déc 2017 19:12

Re: Activer système particule après quelques secondes

Message par Leuprochon » 03 Juil 2019 12:41

Ah merci pour le lien !

En fait mes particules ne durent que quelques seconde (5/6s). Si je passe du Stop au Play il revient automatiquement au début ?

Je vais tester tout ça, merci !

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Activer système particule après quelques secondes

Message par boubouk50 » 03 Juil 2019 13:16

Tout est dans la documentation:
If the Particle System has been paused, then this resumes playing from the previous time.
If the Particle System has stopped, then the system starts from time 0, and, if it is relevant, the startDelay is applied.

Si le système de particules a été mis en pause, il recommencera au point de pause lors du Play ().
Si le système de particules a été stoppé, alors il recommencera de 0, incluant aussi le délais de départ.
"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

Leuprochon
Messages : 60
Inscription : 04 Déc 2017 19:12

Re: Activer système particule après quelques secondes

Message par Leuprochon » 03 Juil 2019 15:00

Merci, j'ai vu ça oui !

Merci à nouveau car finalement j'ai pu faire ce que je voulais et c'était bien plus simple !!

J'ai juste joué avec le start delay du particle system et mis en pause quand je perdais le signal !!

Ah et oui, j'avais pas assigné le script au bon objet, pour ça que rien ne fonctionnait ...

Code : Tout sélectionner

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

public class Particules_Activation : MonoBehaviour, ITrackableEventHandler

{

    private TrackableBehaviour mTrackableBehaviour;

    public ParticleSystem Particules;



    void Start()

    {
        Particules.Stop();

        mTrackableBehaviour = GetComponent<TrackableBehaviour>();

        if (mTrackableBehaviour)

        {

            mTrackableBehaviour.RegisterTrackableEventHandler(this);

        }

    }

    public void OnTrackableStateChanged(

                                    TrackableBehaviour.Status previousStatus,

                                    TrackableBehaviour.Status newStatus)

    {

        if (newStatus == TrackableBehaviour.Status.DETECTED ||

            newStatus == TrackableBehaviour.Status.TRACKED ||

            newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED)

        {
                Particules.Play();
                Debug.Log("Play");
        }

        else

        {
            // Stop  when target is lost
                Particules.Pause();
                Debug.Log("Paused");
        }

    }

}
Dernière édition par Leuprochon le 03 Juil 2019 15:20, édité 1 fois.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [Résolu] Activer système particule après quelques secondes

Message par boubouk50 » 03 Juil 2019 15:09

J'aurais dû poser la question dès le départ... Ton code me semblait bon, donc il y avait des chances que ce soit la configuration.
"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

Répondre

Revenir vers « Scripting »