- Home /
 
Collision problem in C#
So basically I want to be able to detect if my capsule collides with my sphere. Right now it just isn't working. Here is the script I place on the sphere:
 public GameObject ParticlePrefab;
 
 void OnTriggerEnter(Collider col){
     Debug.Log("Hit");
     Destroy(col.gameObject);
     Instantiate(ParticlePrefab, transform.position, transform.rotation);
 }
 
               For some reason it never does any of this when the capsule collides with it. I have the capsule as a Rigidbody and a trigger, so I can't think of a reason why this won't work. Any help would be appreciated.
Answer by Infamous911 · Jul 26, 2011 at 07:43 PM
Ok the problem was that I never actually applied the rigidbody properly. Thanks for the help!
Answer by Giometric · Jul 25, 2011 at 08:49 PM
Is the Sphere that this script is on also a trigger?
edit: actually the example code for C# does have some stuff not present in your script.
 using UnityEngine;
 using System.Collections;
 
 public class example : MonoBehaviour {
     void OnTriggerEnter(Collider other) {
         Destroy(other.gameObject);
     }
 }
 
               I'm not a C# user myself but it might just need those first few extra lines and also the "public class example" part before it will work at all.
I think as long as one of them is a trigger, OnTriggerEnter() gets called on both.
Yeah, I remembered that right after posting hehe, quickly edited with a better answer :P
Yes I have that, I just edited out all of the other stuff so that you could see the script that was associated with the problem.
Answer by Infamous911 · Jul 25, 2011 at 08:52 PM
No but I tried that and it doesn't change anything.
Answer by Giometric · Jul 25, 2011 at 09:53 PM
Ok I went ahead and replicated the scene you described, and it seems to be working fine. This is what the entire script I have looks like:
 using UnityEngine;
 using System.Collections;
 
 public class test2 : MonoBehaviour {
     
     public GameObject ParticlePrefab;
 
     void OnTriggerEnter(Collider col){
         Debug.Log("Hit");
         Destroy(col.gameObject);
         //Instantiate(ParticlePrefab, transform.position, transform.rotation);
     }
 }
 
               Though as you can see I commented out the Instantiate part, the Debug.Log part is definitely working. So I'm not sure what's going on with yours.. my scene is using a simple Unity sphere and capsule, the sphere has the script on it, and the capsule has a rigidbody applied and nothing else. Are you using a character controller on your capsule?
Can you show me how you're applying the Rigidbody? $$anonymous$$aybe that has something to do with it.
Your answer
 
             Follow this Question
Related Questions
Check if trigger is occupied 1 Answer
OnTriggerEnter Not Working 1 Answer
Help with destroying objects on collision 2 Answers
OnTriggerEnter with exact spot of collision 2 Answers
OnTrigger event when colliders are already touching eachother 1 Answer