Transform manipulation (3D)#

If you are moving dynamic (non-kinematic) rigidbodies via their transforms they are likely not interacting with the physics engine, and will not properly send messages.

Using transform.position to move objects bypasses the physics simulation step.
By instead using AddForce, or MovePosition, colliders will produce collisions and triggers.
These methods should generally be called from FixedUpdate.

Creating rigidbody character controllers#

If you are confused as to how to write a character controller that uses a Rigidbody, watch a tutorial or purchase a pre-made controller. Unity has Starter Assets with third person and first person character controllers, these assets are set up for the Universal Render Pipeline. For a more robust controller Unity also owns a Kinematic Character Controller which contains a demo controller, but requires experience to compose into your own setup.

Physics-based controllers#

Physics-based controllers will use forces to move a body through the scene, meaning they are fairly easy to create but can respond to forces in ways that may not be desirable. This can include incorrect slope handling, poor control on bumpy surfaces, unexpected responses to external forces, and so on.

Kinematic controllers#

Kinematic controllers use physics queries to check for movement before directly moving to a location. Extra work is required to build a complete controller that robustly handles complex scenarios, and bypassing physics can make the character unresponsive to external forces.
However, because each aspect of their interactions has been authored, this makes for a robust and intentional experience.

I am still not getting a message.