2017-03-23 1 views
0

J'ai un "joueur" étiqueté cube, qui doit sauter à certains endroits, représenté par GameObjects vide.Pourquoi n'ai-je pas de collision?

Je veux faire un système de points et que la raison pour laquelle je mets quelques-uns des endroits autres objets de jeu tagged « Coin »

Le cube a une animation qui joue chaque fois qu'il se déplace à un autre point reconnu en cliquant avec la souris dessus.
Lorsque je saute sur l'emplacement de la pièce, je veux que l'objet Coin soit détruit.

J'utilise cette fonction:

void OnTriggerEnter(Collider col){ 
    if (col.gameObject.tag == "Coin") { 
     Debug.Log ("Plm"); 
     stroy (col.gameObject); 
    } 

Le problème est que quand je saute à rien de l'emplacement Coin arrive.
J'ai des collisionneurs de boîtes sur les deux objets et OnTrigger vérifié sur les deux.

+1

Avez-vous sur votre 'modèle du solide indéformable player'? – CNuts

+0

Des questions sur les problèmes de détection de collision ont été posées mille fois. Avez-vous vérifié: Les corps rigides? Les collisionneurs? (une avec 'IsTrigger' cochée)? Utilisez-vous des collisionneurs 2D? Si oui, utilisez 'OnTriggerEnter2D' à la place. Avez-vous vérifié la [matrice de collision] (https://docs.unity3d.com/Manual/LayerBasedCollision.html)? Etes-vous sûr que la pièce est étiquetée "Coin" (et non "pièce" ou "COIN")? Avez-vous mis un simple 'Debug.Log (" Collision ")' en dehors de la condition? – Hellium

Répondre

2

1) Assurez-vous que l'un gameobject a une

modèle du solide indéformable

Pour que le OnTriggerEnter vous arrive besoin d'au moins un des deux objets pour avoir un RigidBody attaché.

2) statique Trigger collisionneur

Un objet qui a un collisionneur et isTrigger vérifiée mais pas rigibBody est considéré comme un Static Trigger Collider qui sont From Unity Documentation:

Ceci est un gameobject qui a un collisionneur, mais pas Corps rigide. Les collisionneurs statiques sont utilisés pour la géométrie de niveau qui reste toujours au même endroit et ne bouge jamais. Les objets de corps rigides entrants entreront en collision avec le collisionneur statique mais ne le déplaceront pas.

Ce type d'interactions collisionneur est parfait pour vos pièces de monnaie parce qu'ils ne bougent pas et restent statiques.

3) modèle du solide indéformable Trigger Collider

Le deuxième type d'interactions collisionneur est un Rigidbody Trigger Collider qui sont:

Ceci est un gameobject avec un Collider et un modèle du solide indéformable normale, non-cinématique ci-jointe. Les collisionneurs de corps rigides sont entièrement simulés par le moteur physique et peuvent réagir aux collisions et aux forces appliquées à partir d'un script. Ils peuvent entrer en collision avec d'autres objets (y compris les collisionneurs statiques)

Ce type de collisionneur est ce dont vous avez besoin sur votre player et comme il est dit dans la documentation Unity il sera en mesure d'entrer en collision avec le Static trigger collider.

observation importante:

Ayant IsTrigger valeur true sur votre collisionneur joueur fera de votre joueur à ne répond pas comme un objet solide

Un collisionneur configuré comme un déclencheur (en utilisant le La propriété Trigger) ne se comporte pas comme un objet solide et permet simplement à d'autres collisionneurs de passer.

peut ne pas être la solution la plus optimale pour vous parce que la plupart du temps, vous voulez que votre lecteur puisse entrer en collision avec d'autres choses comme le sol. Vous pouvez donc définir le isTrigger sur false et avoir juste un corps rigide sur votre lecteur et il réagira aux pièces si elles sont définies comme Static Trigger Collider.


Si vous voulez un moyen facile de savoir ce qui peut entrer en collision avec ce Read the colliders documentation et jeter un oeil à ce tableau que montre d'une manière plus simple.

enter image description here