Use Kinematic Triggers for Non-PhysX Games in Unity

When you're jamming on, oh, say, a 48-hour solo game competition, super fine-grained control over the movement of characters/projectiles is something you need instead of being at the whims of a full physics engine.

Unity makes this possible, but the relevant documentation page doesn't exactly spell it out explicitly enough for my tastes.

So anyway, if you're making a Unity game where 1) You're not using the PhysX engine and 2) You want to detect collisions, then here's what you need to do:

  • Give rigidbodies to all your colliders.
  • On those rigidbodies, set isKinematic to true.
  • On the collider, set isTrigger to True.
  • Detect collisions in the trigger functions, OnTriggerXXX(), not OnCollisionXXX().

That's it! I'm happy I figured this out during a Ludum Dare, and not on a more important project, but either way I'm glad I know what to do next time.