box collider "soupe"

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
ber_trand07
Messages : 36
Inscription : 04 Sep 2016 17:35

box collider "soupe"

Message par ber_trand07 » 16 Jan 2017 19:53

bonjour, j'essaye de faire une sorte de soupe. Je m'explique : je dispose d'un box collider dans lequel je peux poser des objets. lorsque par exemple le joueur a posé 1 carotte et 1 poireau, ceux ci disparaissent et on les remplace par un autre objet (soupe).

J'ai fait ceci :

Code : Tout sélectionner

public GameObject Soupe; 
public Transform transform;
public bool Carotte = false;
public bool Poireau = false;


void OnTriggerEnter (Collider col) 
{
    if (col.gameObject.tag == "Carotte") 
    {
        Carotte = true;
    }

    if (col.gameObject.tag == "Poireau")
    {
        Poireau = true;
    }

    if (Poireau == true && Carotte == true) 
    {
        Instantiate (Soupe, transform.position, Quaternion.identity);
        //Destroy Carotte et poireau
    }

}

Mais je ne sais pas comment faire pour détruire les gameObjects...

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

Re: box collider "soupe"

Message par Max » 16 Jan 2017 19:57

Bonsoir,
ber_trand07 a écrit :Mais je ne sais pas comment faire pour détruire les gameObjects...
Ben la doc est ton ami dans ce cas.
Et donc regarde du coté de Destroy() (attention, pour les gameobjects 'carotte' et 'poireau')
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

zugsoft
Messages : 386
Inscription : 26 Juin 2014 23:43
Localisation : Swiss
Contact :

Re: box collider "soupe"

Message par zugsoft » 16 Jan 2017 21:08

:lol:
L'année 2017 s'annonce de tres haut niveau, il y a pas mal de topic ou il faut 2min de recherche sur Google pour trouver les solutions.
Il faudrait songer a vous creuser un peu la cervelle au lieu de demander de simple solution.
Moon RTS

ber_trand07
Messages : 36
Inscription : 04 Sep 2016 17:35

Re: box collider "soupe"

Message par ber_trand07 » 16 Jan 2017 21:18

J'ai cherché durant de longues heures ! Effectivement j'ai vu des fonctions Destroy avec entriggerenter mais se que je veux faire c'est détruire seulement lorsque une variables boom passe à vrai j'ai donc essayé de créer une variable bool pour savoir si la soupe est créée et si elle l'est alors on destroy mais sa ne fonctionne pas. J'ai essayé également plusieurs chose grave à la doc en vains.

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: box collider "soupe"

Message par Moi 1971 » 17 Jan 2017 11:04

Bonjour,
Je crois qu'il te serait préférable que tu apprennes les bases de la programmation, l’algorithmie et ensuite de faire tous les tutos sur Unity pour comprendre comment Unity fonctionne. Aux vues des questions que tu poses, il est claire que tu nages dans un brumeux et épais nuage d'incompréhension.
Bon courage. ;-)

ber_trand07
Messages : 36
Inscription : 04 Sep 2016 17:35

Re: box collider "soupe"

Message par ber_trand07 » 17 Jan 2017 12:51

c'est deja fait. Je programme depuis 2-3 ans sur Unity c'est simplement une question de "logique" (peut être un peux de programmation également car je ne connais pas toutes les foncions je ne connais pas tout). Je sais comment faire un destroy avec un tag c'est juste que je ne trouve pas comment faire dans cet exemple précis.

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: box collider "soupe"

Message par Moi 1971 » 17 Jan 2017 12:53

Je persiste, tu ne comprends pas une logique très simple... mais tu fais comme tu veux et comme moi tu peux persister dans ta façon de faire. ;-)

ber_trand07
Messages : 36
Inscription : 04 Sep 2016 17:35

Re: box collider "soupe"

Message par ber_trand07 » 17 Jan 2017 12:59

c'est pour cela que je demande une explication...
Si on doit apprendre chaque logique pour chaque chose qui est possible de faire avec Unity, une vie ne suffit pas

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

Re: box collider "soupe"

Message par boubouk50 » 17 Jan 2017 13:06

Je suis totalement d'accord avec Moi1971.
Il n'y a pas une logique par chose, mais une logique unique derrière tout ça: la POO (Programmation Orientée Objet). C'est cela qu'il te faut comprendre et/ou apprendre sinon tu vas jamais t'en sortir. Je ne vois pas comment on peut programmer sous Unity sans avoir piger cette logique de développement qui régit vraiment tout.
En quoi cela est difficile à appliquer?

Code : Tout sélectionner

Destroy (gameObject);
Il te suffit simplement de récupérer tes gameObjects carotte et poireau et de les détruire.
Ce n'est pas de la logique à ce niveau, c'est juste bêtement remplacer gameObject par carotte ou poireau...

Il te faut donc apprendre le POO pour comprendre ce système et cette logique (plutôt intuitive).
"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

Moi 1971
Messages : 727
Inscription : 29 Sep 2015 13:38

Re: box collider "soupe"

Message par Moi 1971 » 17 Jan 2017 13:13

C'est là que tu ne comprends pas. Il n'y a pas de logique spécifique pour tel ou tel cas. C'est la logique de l'utilisation d'Unity qu'il faut comprendre. Le code que tu nous as montré indique que tu ne comprends pas les différentes partie d'Unity. Tu mets tout ton code dans la fonction Enter du Trigger, alors qu'il faut utiliser aussi la fonction Update() principalement.

En principe, il faut renseigner les booléens dans les fonctions événementielles tel que OnTriggerEnter et gérer l'état de ces booléens dans la fonction Update() ou FixedUpdate().
Ces deux fonctions Update() sont appelées systématiquement à intervalle défini pour la "Fixed" et non défini pour l'autre. C'est la que l'on doit mettre le code dit "séquentiel".
Les fonctions "OnTrigger" sont appelées de manière évènementielle. Seulement quand un "évènement" se produit. Le code qui est placé ici doit être de type "évènementiel". (si tant est que ce code puisse être identifié comme tel...) En gros, la mise à jour des booléens.

Répondre

Revenir vers « (C#) CSharp »