1
votes

Collision Unity non détectée

Je suis en train de créer un jeu Unity, dans lequel le joueur doit pousser tous les objets "Enemy" de l'avion. Donc, pour pouvoir compter le nombre d'objets tombés, je veux généralement pouvoir dire quand une collision s'est produite entre le cube rouge et chaque autre cube. Le script semble ne pas détecter une collision, comment y remédier?

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

public class Collide : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Enemy")
            Destroy(gameObject);
                Debug.Log("Hit Occured");
    }

}

Afficher

 View

 Afficher


3 commentaires

avez-vous défini le collisionneur comme déclencheur? avez-vous vérifié le graphique des déclencheurs / collisionneurs? vouliez-vous dire déclencheur ou vouliez-vous une collision?


Je veux voir un message Debug.Log après une collision entre le cube rouge et tous les autres cubes


donc pas de réponse à la question ..


3 Réponses :


4
votes

vous avez besoin de OnCollisionEnter

void OnCollisionEnter(Collision collision){

}

parce que vos collisionneurs ne sont pas des déclencheurs.


4 commentaires

Je ne pense pas, car il veut que le cube rouge pousse les autres


C'est vrai, je l'ai à moitié manqué, mais vous pourriez alors vouloir ajouter de la vélocité à la main ou quelque chose comme ça s'enfuit ou quelque chose comme ça ...


Merci, cela résout un problème et en conduit également à un autre. Maintenant, je reçois de la console: Le nom «autre» n'existe pas dans le contexte actuel. Comment réécrire other.gameObject.tag == "Enemy" pour que other signifie l'objet de collision?


maintenant, vous devez utiliser "collision"., peut-être son collider.collider.gameObject.tag?



1
votes

Vous devez implémenter OnCollisionEnter (Collision Collision) et non OnTriggerEnter (Collider other) ou cocher la case BoxCollider IsTrigger


0 commentaires

0
votes

Il y a 3 choses à vérifier 1. OnCollisionEnter doit être utilisé à la place d'OnTriggerEnter 2. La case à cocher isTrigger doit être activée pour que l'événement soit déclenché lorsque les deux corps entrent en collision avec l'autre. 3. La chose la plus importante que personne n'a mentionnée est les balises données à l'objet de jeu ou aux ennemis, car nous devons définir l'objet de jeu cet événement doit être déclenché lorsqu'il est touché au corps spécifique car l'objet de jeu contient le collisionneur et peut entrer en collision avec tout mur ou quelque chose, vous devez donc définir correctement les balises


0 commentaires