- 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