Problème de fonction OnTrigger

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
sosocreeper
Messages : 2
Inscription : 30 Jan 2022 17:01

Problème de fonction OnTrigger

Message par sosocreeper » 06 Fév 2022 19:19

Bonjour,

J'avoue mon premier message était incompréhensible...
j'ai une nouvelle question par rapport à une fonction OnTriggerEnter

voici mon code:

Code : Tout sélectionner

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

public class objet1 : MonoBehaviour
{
    void Start()
    {
    }

    void OnTriggerEnter (Collider col)
    {
        if (col.name =="Capsule")
        {
            print("hello");     
        }

    }

}

lorsque je lance le programme il n'y a pas de message ou d'erreur dans la console
j'ai aussi vérifié que le script ne sois pas attacher au gameObject Capsule
je suis sur que c'est une erreur toute bête

merci :-D

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

Re: Problème de fonction OnTrigger

Message par Max » 06 Fév 2022 19:25

Bonjour,

première question: ta capsule possède-t-elle un rigidbody ?
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

Avatar de l’utilisateur
jmhoubre
Messages : 865
Inscription : 05 Oct 2019 22:05

Re: Problème de fonction OnTrigger

Message par jmhoubre » 06 Fév 2022 22:58

Pour que le système de détection de collision d'Unity fonctionne, il y a des conditions à respecter, entre autres :
  1. chaque objet impliqué dans la collision doit avoir un Collider ;
  2. un des objets au moins doit avoir un Rigidbody ;
Par exemple, si ton Player doit collecter des trucs (pièces, objets, ...), généralement le Player a un Collider et porte le Rigidbody, et les trucs ont seulement un Collider.

Par ailleurs, on évite ce genre de choses :

Code : Tout sélectionner

if (col.name =="Capsule")
Si tu changes le nom de ton objet, la condition ne sera plus vraie. On préfèrera la comparaison de tag. Chaque GameObject dispose tout en haut de l'inspecteur un champ Tag, qui permet de lui mettre une étiquette. Par exemple, ton Player peut être étiqueté "Player" (c'est un tag déjà prévu par Unity) et ton code peut s'écrire :

Code : Tout sélectionner

	private void OnTriggerEnter (Collider col)
	{
		if (col.gameObject.CompareTag ("Player"))
		{
			Debug.Log ("Joueur touché.");
		}
	}

Répondre

Revenir vers « Scripting »