OnCollisionEnter() ne fonctionne pas dans Unity3D
J'ai un objet avec un mesh collider et un prefab à la sphère du collisionneur. Je veux l'instance de l'prefab être détruits si les deux entrent en collision.
J'ai écrit ce qui suit dans un script:
private void OnCollisionEnter(Collision c)
{
if (c == target)
Destroy(transform.gameObject);
print("something"); //Doesn't get printed
}
Mais ça ne fonctionne pas. J'ai essayé de basculement isTrigger
sur les deux objets.
Êtes-vous sûr que les collisionneurs sont à l'entrée/la frapper les uns les autres?
Ce type est
les collisionneurs sont en traversant les uns les autres, j'ai vu à partir de différents angles dans la Scène de la Vue.
Ce type est
target
? Je ne pense pas que c==target
sera jamais true
, mais vous devriez toujours obtenir votre message imprimé. Vous pourriez être à la recherche pour c.gameObject == target
. docs.unity3d.com/Documentation/ScriptReference/...les collisionneurs sont en traversant les uns les autres, j'ai vu à partir de différents angles dans la Scène de la Vue.
OriginalL'auteur Temp Id | 2013-08-16
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème de
OnCollisionEnter
pas être appelé et a trouvé cette question.Pour moi, le problème est que j'ai été faire un jeu en 2D, donc la réponse est d'utiliser le
OnCollisionEnter2D
fonction de la place.Merci!!!! Et le
Collsion collsion
argument doit être unCollision2D
trop.OriginalL'auteur Peter de Rivaz
Ont un coup d'oeil à ce tableau
Si vous voulez que votre
OnCollisionEnter
d'être appelé assurez-vous que:(a) les Deux objets ont un collisionneur attaché.
(b) Aucun de ces objets est un déclencheur collider (cette question OnTrigger fonction & pas OnCollisionEnter)
(c) l'Un des objets (dans n'importe lequel d'entre eux) est un semi-rigide, non cinématiques & non statique de l'objet (le deuxième n'avez pas à être un corps rigide).
(d) en Raison des difficultés de calcul MeshCollider peut avoir des moments difficiles en collision avec d'autres mesh collider, les utiliser avec prudence.
(e) assurez-vous que les objets sont dans la même couche.
OriginalL'auteur Ohad Cohen
Assurez-vous que l'un d'entre eux a un non-cinématique rigidbody ci-joint. Prises à partir de l'Unité docs:
À partir d'ici: Unity3D MeshCollider
Dans mon projet, la sphère est fixe alors que l'autre objet se déplace seulement parce qu'il est un enfant d'un autre objet, qui est déplacé uniquement par les transformations et les rotations.
Les formes du mesh erreur peut signifier que vous avez un maillage qui ne peut pas être converti en un bon de physique rigidbody. Pouvez-vous remplacer la maille avec un primitve pour voir si cela aide?
OriginalL'auteur lukegravitt
Avez-vous essayé d'utiliser le OnTriggerEnter() de la classe et de la fixation d'un collisionneur sur l'objet à un déclencheur?
Si elle n'a pas besoin de dire ce que l'objet de sa collision avec, vous pourriez faire un simple
Edit:
Aussi j'ai fait OnCollision comme ce
Aucun de ces objets sont des déclencheurs et ils n'ont pas besoin ridgid organes de travail.
OriginalL'auteur Matt Baeriswyl