[RESOLU][DB-AL] 2 Box Colliders pour un même objet

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
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

[RESOLU][DB-AL] 2 Box Colliders pour un même objet

Message par DJ-OMZ » 13 Sep 2018 13:27

Bonjour,

Je voudrais savoir si il est possible d'avoir 2 Box Colliders sur un objet, et dans un script, faire une action différente en fonction du box Collider sur lequel on a cliqué.

Merci,
Dernière édition par DJ-OMZ le 13 Sep 2018 14:19, édité 1 fois.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: [DB-AL] 2 Box Colliders pour un même objet

Message par Alesk » 13 Sep 2018 13:47

Oui, tu peux mettre plusieurs colliders sur un même gameobject.

Par contre ça va être plus compliqué pour les différencier, car il va falloir les référencer avant pour savoir qui est qui.

Tu peux essayer avec un script de ce type, où tu auras préalablement listé les colliders dans l'inspecteur pour déterminer leur ordre et donc savoir lequel est le premier et lequel est le second.

Code : Tout sélectionner

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

public class test : MonoBehaviour {

    public List<Collider> colliders = new List<Collider>();

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hit;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out hit))
            {

                if (hit.collider != null)
                {
                    int index = colliders.IndexOf(hit.collider);
                    switch (index)
                    {
                        case 0:
                            Debug.Log("Collider A");
                            break;

                        case 1:
                            Debug.Log("Collider B");
                            break;
                    }
                }
            }
        }
    }
}

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

Re: [DB-AL] 2 Box Colliders pour un même objet

Message par boubouk50 » 13 Sep 2018 14:02

Tu peux également organiser tes Colliders pour les mettre en tant qu'enfant.
Tu gardes ton gameObject tel quel, tu crées des gameObjects vide enfants auxquels tu colleras chacun un collider.
Ensuite, quand un Collider est touché, tu peux savoir qui il est car le gameObject associé sera différent.
"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

Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Re: [DB-AL] 2 Box Colliders pour un même objet

Message par DJ-OMZ » 13 Sep 2018 14:18

Merci de la réponse;

Effectivement ça fonctionne, bien joué et merci :super:

Boubouk50 : Malheureusement dans mon cas j'ai certaines particularités qui me rendent cette solution impossible, mais pas grave l'autre méthode fonctionne parfaitement !

Répondre

Revenir vers « (C#) CSharp »