Best collision detection method?

Good day everybody!

Hope all is well :slight_smile:

I’m having some problems with my simple collision script, and was wondering if I’m doing it the right way.


Heres the scenario:

  • Have a “spell” which my player casts, it instantiates a gameObject with a particle system, light, collision script, rigidbody, sphere collider and detonator attached to it (Sphere collider disabled on “source”, and enabled once “cast”)

  • When my player “casts” the spell, everythings works 100% except for the collision sometimes.

  • My rigidbody’s collision detection is set to “Continues Dynamic”, does not make a difference when set to “Dynamic” or “Discreet”

  • I require the rigidbody in order to add force for the spell to move in the direction shot


Heres what happens:

  • The instantiated object does bounce off my world (meaning the collision is working)

  • Sometimes it does print “Hit” to the console, but does not explode

  • Sometimes it prints “Hit” and explodes, but does not detroy the object

  • Sometimes it does not print or explode, but destroys itself

  • Sometimes it prints, explodes and destroys.

  • Angle/direction the spell is cast in does not effect the result.


Herewith my script attached to the “source”:

function OnCollisionStay(collision : Collision) {
	print ("Hit!");
	SendMessage("doExplode", SendMessageOptions.RequireReceiver);
	Destroy(gameObject);
	}

I also tried OnCollisionEnter but does not detect anything.

Quite possibly, I’m missing something, and hope that someone more experienced will be able to give me an opinion/solution.

All the best!

What do you want the object to do? If you want it to explode at first collision, use OnCollisionEnter. What is it colliding with? Very strange if OnCollisionEnter doesn’t detect anything. Especialy since you say your spell bounces: each bounce should be detected. Try print(collision.gameObject.name) and if it doesn’t give you the name of the object/surface your spell bounces off, your problem probably lies elsewhere. Try debugging with OnCollisionEnter(collision:Collider) as well, to narrow it down. Ah, one more thing: you say your script is attached to the “source”, I hope that doesn’t mean it just stays with the caster and hence doesn’t travel with the spell object!

Just ran into the same problem and came up with a solution that works in my case. My collision was doing the same thing where it would work sometimes and other times it would not. In order to fix this, I had to make sure that both the collider and the object it was colliding with have a rigidbody in it. The problem came up more when one of the objects was already involved in another collision. Try that and let me know.