Collision Only being detected on one of the objects involved in the collision - C#

Hi all!

I have an object, an asteroid to be precise, which is set up with a Sphere Collider & a non-kinematic rigidbody.

The other object involved in the collision is your Player object, which has a bubble-shaped Shield as one of it’s children, set up with a Capsule Collider.

The shield is where I’m calling the OnCollisionEnter function from.

The script is below:

 void OnCollisionEnter(Collision col) {
 
         Debug.Log(col.gameObject.name);
 
         if(col.gameObject.name == "Asteroid") {
 
             Debug.Log("HitAsteroid!");
 
         //    HitForce = col.rigidbody.mass/GetComponent<Rigidbody>().mass * GetComponent<Rigidbody>().velocity.z; - Ingore this for now, this is for the next part of the code, I just need to get the initial collision detection to work first!
         }
 
     }

The two objects physically collide with eachother, however the problem is, I don’t get any feedback from collision, it just doesn’t register it as a hit.

I have also tried putting this script on the other object as a test, and it works, it detects when it hits the player, but I cannot detect on the player when it hits an asteroid, it’s weird.

So to sum up, both objects have a Collider (without Trigger enabled), and one of them has a Rigidbody. In theory this should work right, or am I missing something?

Thank you in advance :slight_smile:

Sam

Wow, 7 years and no answer.
My understanding is that a collsion exists only between objects which both have true colliders (no trigger) and one of them has a true rigidbody (not kinematic).

I stumbled across this post because I do have the same problem where the identical script on one side does not trigger. Also my situation is more complex with one of the colliders beeing an animated object made up of dozens of colliders. But I have tried this without animation and it works.

So no solution but I am also interessted in how to fix this.