[DB-AL]empecher le doublement instance

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
jetonpeche
Messages : 5
Inscription : 04 Mai 2019 18:22

[DB-AL]empecher le doublement instance

Message par jetonpeche » 11 Mai 2019 00:49

Bonjour

Depuis 2 jours je cherche comment empêche le doublement d'un objet instancier.

La 1erre partie sert a déclancher le piège

Code : Tout sélectionner

    public GameObject carapace;

    //acces au script arme_piege
    private Arme_piege newCarapace;

    // Start scene
    private void Start()
    {
        //acces script Arme_piege
        newCarapace = GameObject.Find("Arme_piege").GetComponent<Arme_piege>();

        //initialisation components
        carapace.GetComponent<SpriteRenderer>().enabled = false;
        carapace.GetComponent<Rigidbody2D>().isKinematic = true;
        carapace.GetComponent<BoxCollider2D>().isTrigger = true;
    }

    private void Update()
    {
        if (newCarapace.obj != null)
        {
            carapace = newCarapace.obj;
        }
    }

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if(collision.name == "Robot")
        {
            //modification des components
            carapace.GetComponent<SpriteRenderer>().enabled = true;
            carapace.GetComponent<Rigidbody2D>().isKinematic = false;
            carapace.GetComponent<BoxCollider2D>().isTrigger = false;
        }
        
    }
Cette partie sert a le rearmé

Code : Tout sélectionner

//ne rien attribuer (sa ne sert a rien)
    public GameObject obj = null;

    //sencer empeche le spawn multiple (marche pas)
    public bool aSpawner = false;

    //Ajout d'une image au gameObject (soucis image)
    public Sprite image;

    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.name == "Robot" && obj == null && !aSpawner)
        {

            aSpawner = true;

            //creation d"une nouvelle carapace (va etre modifier)
            obj = new GameObject("caparace");

            //ajout d'un tag
            obj.tag = "piege";

            //ajout des components et parametrage
            obj.AddComponent<BoxCollider2D>();

            //atribution de l'image au gameObject
            obj.AddComponent<SpriteRenderer>().sprite = image;
            obj.AddComponent<Rigidbody2D>().isKinematic = true;

            //initilasiton suplementaire des components
            obj.transform.localScale = new Vector3(0.4846875f, 0.41f, 1);
            obj.GetComponent<Rigidbody2D>().mass = 500;
            obj.GetComponent<SpriteRenderer>().enabled = false;
            obj.GetComponent<BoxCollider2D>().isTrigger = true;

            //position de depart
            obj.transform.position = new Vector2(15, 4);
puis l'objet est détruit dans une zone.

Mais l'objet instancier se double et je n'arrive pas à en faire instancier que 1
du coup la 1ere instance prend les paramètres mais se declanche pas mais la 2e instance prend pas le sprite = image mais se déclanche correctement.

Je n'est aucune erreur dan la console.

PS: Je sait que Unity instancie autrement mais pas trop compris et se n'es pas le problème enfin je pense

Si quelqu'un sait comment faire merci beaucoup ! :-D

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

Re: [DB-AL]empecher le doublement instance

Message par Max » 11 Mai 2019 10:45

B onjour,

Déjà première question: pourquoi ne passes-tu pas par les prefabs ?
Ton second code par exemple, avec ces valeurs en dur, se réduirait à une seule ligne au lieu de 10, et les choses seraient tellement plus claires. Tu aurais juste à écrire obj = Instantiate(carapace) , "carapace" étant un prefab.
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

jetonpeche
Messages : 5
Inscription : 04 Mai 2019 18:22

Re: [DB-AL]empecher le doublement instance

Message par jetonpeche » 11 Mai 2019 14:07

8| MERCI beaucoup c’était juste sa qui me bloquai MERCI :amen:

Maintenant après quelque test l’objet clone ne veut pas aller dans la variable carapace
newCarapace.obj n'est plus null donc logiquement sa devrait marcher

Code : Tout sélectionner

if (newCarapace.obj != null)
        {
            print("nouvelle attribution");
            carapace = newCarapace.obj;
        }

zebilamouche
Messages : 38
Inscription : 17 Juin 2016 20:34

Re: [DB-AL]empecher le doublement instance

Message par zebilamouche » 13 Mai 2019 14:29

Hello,

c'est possible de nous envoyer ton nouveau code en entier ?

merci.

Répondre

Revenir vers « (C#) CSharp »