[RESOLU][DB-AL] Gerer un intermediaire

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
hercull
Messages : 34
Inscription : 20 Août 2017 00:58

Re: [DB-AL] Gerer un intermediaire

Message par hercull » 06 Sep 2017 14:01

Je pense comprendre ce que je fais, l'erreur est sur ces 3 lignes :

Code : Tout sélectionner

		animRenderer = goldCoin.GetComponent<Renderer> ();
		animGC = goldCoin.GetComponent<GoldCoins>();
		animRenderer.enabled = false;
il semblerai qu'il n'arrive pas à assigner les valeurs aux variables, le goldCoin pose problème.

Qu'en pense tu?

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

Re: [DB-AL] Gerer un intermediaire

Message par boubouk50 » 06 Sep 2017 14:09

boubouk50 a écrit :
06 Sep 2017 13:23
Ça veut dire que le Renderer n'est pas trouvé. Surement qu'il faut utiliser MeshRenderer plutôt.
Je t'ai dit ce qui n'allait pas, c'est bien que tu ne comprends pas trop ce que tu fais.
Une NullReference signifie qu'une variable est nulle mais que tu essaies de faire quelque chose avec.
Si ton GetComponent () ne fonctionne pas, par exemple, il renvoie null, donc animRenderer vaut null et il est impossible de faire animRenderer.enabled.
Egalement cela peut être que ta variable goldCoinn'est pas renseignée, c'est à dire que la recherche dans le Start () a échoué. goldCoin est donc null donc tu ne peux accéder à ses Components.
Il te faut donc vérifier si ces variables ont bien été trouvée.
Debug.Log () ou bien des tests != null
"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

hercull
Messages : 34
Inscription : 20 Août 2017 00:58

Re: [DB-AL] Gerer un intermediaire

Message par hercull » 06 Sep 2017 16:14

Merci pour cette réponse j'ai donc pu constater que le goldCoin était null.
Le problème venait du "transform.parent" dans la boucle, j'ai retiré le ".parent" et cela fonctionne.

Merci pour ton aide.

Avatar de l’utilisateur
Aiyor
Messages : 24
Inscription : 14 Juin 2017 12:08

Re: [DB-AL] Gerer un intermediaire

Message par Aiyor » 06 Sep 2017 16:51

Tu pourrais mettre des copies d'écran de ton Animator, avec les variables apparentes, qu'on voit ton trigger "CoinsUp".
Je trouve étonnant que tu aies appelé ton trigger avec le même nom d'un "etat" de ton animator...
Car d'après ton code, tu actives le trigger "coinsUp", donc l'animator devrait automatiquement déclencher la transition dans laquelle tu l'as paramétré.
Et ensuite tu fais un anim.Play, qui prend en paramètre le nom d'un "état" de l'animator.
Donc, soit tu n'utilise pas de transitions dans ton animator et le SetTrigger ne sert à rien.
Soit tu en utilise un , mais ton Anim.Play ne sert à rien...

Tu ne confondrais/mélangerais pas Animator et Animation par hasard?

Essaie de le faire avec une Animation "classique" à mon avis. Tu vires le component Animator de ton objet, tu le remplace par un component Animation, tu lui glisses le clip et utilse plutôt la class Animation

https://docs.unity3d.com/ScriptReference/Animation.html


N'hésitez pas à dire si je raconte n'importe quoi surtout, je suis pas non plus expert dans le domaine..

Avatar de l’utilisateur
Greg
Messages : 156
Inscription : 08 Mai 2017 15:22

Re: [DB-AL] Gerer un intermediaire

Message par Greg » 07 Sep 2017 07:55

Coucou,

moi, j'ai fais un truc comme ça :

Code : Tout sélectionner

using UnityEngine;

public class Coin: MonoBehaviour {

    void OnTriggerEnter2D(Collider2D collision)
    {
            // Boom !
            managerScript.Boom(gameObject, 2);
    }

Code : Tout sélectionner

using System.Collections;
using UnityEngine;

public class managerScript: MonoBehaviour
{
    // Sounds
    AudioClip soundPlus;
    AudioClip soundLess;

    public void Boom(GameObject go, int withSound)
    {
        AudioSource audioSource;

        // Instantiate & set Position of the explosion.
        GameObject explosion = Resources.Load("Prefabs/Explosion") as GameObject;
        explosion = Instantiate(explosion , transform.position, transform.rotation);

        // Sound of explosion.
        audioSource = explosion.AddComponent<AudioSource>();

        if (withSound == 1)
            audioSource.clip = soundPlus;
        else if (withSound == 2)
            audioSource.clip = soundLess;

        if (withSound != 0)
        {
            audioSource.volume = optionsManager.sounds;
            audioSource.Play();
        }

        // Size.
        Vector3 wSize = go.transform.localScale * 0.75f;
        explosion.transform.localScale = wSize;

        // Destroy after animation.
        Destroy(explosion, explosion.GetComponent<Animator>().GetCurrentAnimatorStateInfo(0).length);
        Destroy(go.transform.parent);
    }
(j'ai adapté un peu à l'arrache... peut-être c'est pas top.... :] )

Quand le parent (qui à le script coin) trigg, il appel une méthode 'Boom'. Cette méthode crée un prefab 'Explosion' et le paramètre sur la position appelante (le prefab a l'animator avec animation onplay at start). Ensuite, elle détruit le 'gameObject 'appelant' puis le prefab 'explosion' après l'anim.

Le principe, c'est de pouvoir faire exploser n'importe quel gameObject avec la méthode implémentée.
C'est aussi préférable de ne pas avoir 50 pièces sur la scène chacune gérant des animations... Dans le cas d'un objet avec beaucoup d'instances, il faut le rendre le plus 'light' possible.

:merci:
Mon jeu de développement cellulaire : MICROBIOME (encore quelques bugs...)
(merci bien à ceux qui passent mettre des étoiles ! ^^)

hercull
Messages : 34
Inscription : 20 Août 2017 00:58

Re: [DB-AL] Gerer un intermediaire

Message par hercull » 07 Sep 2017 12:01

Merci pour votre aide, j'ai trouvé la solution, enfaite je désactivais mon gameobject et le réactivai ensuite et comme il était désactivé l'animation ne se jouer pas.

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

Re: [DB-AL] Gerer un intermediaire

Message par boubouk50 » 07 Sep 2017 12:50

Merci de penser à éditer le premier message en ajoutant [RESOLU] en début de titre. Je le fais cette fois.
"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 « (C#) CSharp »