Page 1 sur 1

C# Détection Collisions [RESOLU]

Publié : 01 Mai 2018 17:34
par Paullux
Bonjour,

Je suis entrain de m'arracher les cheveux, j'ai besoin de détecter les collisions.

L'avatar du joueur et les ennemis/gentils ont un rigibody et un capsule collider, j'ai du commettre une erreur mais ça fait trois jours que je ne la vois pas. (Pour info, les ennemis/gentils sont des GameObjects avec des "rigidbody" et des "capsule collider" qui ont en enfants un gentil et un ennemi qui évoluent aux cours du jeu.)

J'ai écrit ce code attacher aux ennemis :

Code : Tout sélectionner

    void OnCollisionStay(Collision other)
    {
        Debug.text = "Name = " + other.gameObject.name + "\n" + "Tag = " + other.gameObject.tag;
        if (other.gameObject.name == "Soldier" || other.gameObject.tag == "ZombieOrHumain")
        {
            if(other.transform.GetChild(0).gameObject.activeSelf && other.gameObject != transform.gameObject)
            {
                if (!zombiesAttack)
                {
                    StartCoroutine("ZombieAttack");
                    other.gameObject.GetComponent<PointDeVie>().setHP(other.gameObject.GetComponent<PointDeVie>().getHP() - 4);
                }
            }
        }
        rb.angularVelocity = Vector3.zero;
        rb.velocity = Vector3.zero;
    }
    void OnCollisionExit(Collision other)
    {
        if (other.gameObject.name == "Soldier" || other.gameObject.tag == "ZombieOrHumain")
        {
            if (other.transform.GetChild(0).gameObject.activeSelf && other.gameObject != transform.gameObject)
            {
                StopCoroutine("ZombieAttack");
                zombiesAttack = false;
            }
        }
    }
les capsules colliders et les rigidbody ont ces réglages :
Image


Et les collisions ne sont pas détecté et on entre jamais dans OnCollisionStay, je ne comprends pas pourquoi...

Pour info, je travaille sur ce jeu :
https://www.youtube.com/watch?v=hyvCoUvXVo4

Re: C# Détection Collisions

Publié : 01 Mai 2018 17:50
par Max
Bonjour,

A priori cela semble pourtant bon. Par contre, c'est quoi ton Debug.text ?

Re: C# Détection Collisions

Publié : 01 Mai 2018 17:59
par Paullux
Je fais un jeu grâce à ARcore, le SDK de Google pour la réalité augmentée sur Android.

Hors avec ARcore, on doit connecter un smartphone compatible et en mode debug usb.

Et quand on veut tester le jeu, on doit le faire sur le smartphone directement, hors il n'y a pas la console pour lire les Debug.Log sur le téléphone, du coup j'ai créer un UI text qui s'appelle Debug pour tester les différentes variables et fonctions utilisé dans mon jeu.

Re: C# Détection Collisions

Publié : 01 Mai 2018 18:12
par Max
A ok, je ne connaissais pas. Je ne suis pas du tout connaisseur en RA et en plateforme mobile.

Pour ton soucis, à priori rien ne semble clocher. Les callback sont les bons, tu as le couple rigidbody/collider, donc tu devrais bien rentrer dans OnCollisionStay et avoir ton Debug.text qui te sort le nom du gameobject 'collidé'.
Après, le reste étant lié aux multiples conditions, ça je ne sais pas ce qu'il en est.

Re: C# Détection Collisions

Publié : 01 Mai 2018 18:19
par Paullux
Le text "Debug" ne change pas donc je n'entre jamais dans le "OnCollisionStay()". Et le joueur faisant un "RaycastHit" sur les ennemis, le rigibody/capsule collider fonctionne correctement donc.

Là je sèche, si ça se trouve c'est un bug d'ARcore, je vais poster une "issue" sur le GitHub du projet.

Re: C# Détection Collisions

Publié : 01 Mai 2018 18:23
par Max
Demain il devait y avoir des personne plus callées en RA et qui devraient mieux être en mesure de te répondre, si c'est effectivement lié à un soucis plus spécifique à ce type de dev.

Re: C# Détection Collisions

Publié : 01 Mai 2018 18:31
par Paullux
Pour ceux que ça pourrait intéresser, j'ai posté une issue sur le GitHub du projet : https://github.com/google-ar/arcore-uni ... issues/190

Re: C# Détection Collisions

Publié : 02 Mai 2018 08:55
par Moi 1971
Bonjour,

Peux-tu préciser de quelles collisions tu parles? Sur la vidéo, on voit que les perso ne se traversent pas.

Sinon, il peut y avoir plusieurs causes. Je peux donner deux idées comme ça, à toi de voir ce que tu as déjà vérifier.

Côté Debug : Avant d'être dans le Stay, il faut passer par le Enter et, si jamais on rentre dans le Stay on doit passer par le Exit. As-tu mis Des Debug dans les 3 pour voir? Avec un Time précis pour voir le delta en temps dans chaque.

Côté Objet : La "Collision Detection"sur "Discrète" est peut-être pas asses sensible?

Re: C# Détection Collisions [RESOLU]

Publié : 04 Mai 2018 21:29
par Paullux
C'est moi qui avait fait une erreur, j'utilise un prefab que je fais apparaître dans la scène de réalité augmentée.

J'ai édité le prefab, dans une scène et j'ai compilé une autre scène qui était testé sur le téléphone.

comme il y a un prefab une partie des modifications étaient appliquées mais pas toutes, d'où l'erreur.

J'ai modifié les "build settings" en choisissant la bonne scène et tout est rentré dans l'ordre.