My scene consists of a bunch of kinematic rigidbodies which I manually move around - I am not using gravity or forces at all. I have a road object, car objects, etc - all are kinematic rigidbodies. You can also shoot bullets (also kinematic rigidbodies). The bullets are the ones with the onTriggerEnter handler - the code checks the tag of the other object and figures out the appropriate behaviour of both the bullet and what it has hit. There aren’t any other collision event handlers.

I am worried that because I’ve placed my objects on top of each other (i.e. the car wheels are touching the road, the buildings sit on top of the road), they are generating collisions every frame and slowing everything down. The performance of my game is not great given the relatively small amount of stuff I have going on and I’m wondering if this is the cause of it. The gameObjects are constantly moving, so I have the feeling they’re not falling asleep. Would this be the case? If neither of two kinematic rigidbodies have onEventTrigger handlers, does it still cause a hit on the CPU? I.e. the buildings and road are both moving at the same rate and touching each other the whole time - even though neither have onTriggerEvent handlers, would this cause slowdown?

If this is the case, is it as simple as repositioning the objects so they’re not touching each other (but are very close) and then set their rigidbody sleepVelocity value to the speed that they are moving at (as they all move at a constant pre-defined speed). Is this reasonable? Or am I totally off and I need to go back to the drawing board?

Many thanks for any assistance/insight that can be provided!

Very helpful thread - I’d like to add my experience too.

In short: DON’T use rigidbodies on both sides and dont use them even as kinetic in objects that will not behave ‘physically’ i.e. debris or falling rocks. Keep using them though in projectiles and remember to move them with velocity or forces NOT directly through transform.

The details:
Following the unity docs i added one kinetic rigidboy to the root transform of my collidable objects. I use path finding to move around 40-50 enemies at the same time. Since path finding already keeps nav agents from getting inside one to another, the rigidbodies where usefull only for my custom collision checking.

BUT, It turns out that since the bullets are already rigidbodies and the player is a character controller, ALL collision AND trigger events fire correctly WITHOUT the rigidboies and performance also went up from 23fps to 57-70fps even IN the editor!

well, the amount of rigidbody’s could be a problem with mobile devices, but keep in mind that a moving rigidbody is ALWAYS faster then a object that is moving without rigidbody. The engine doesnt expect a not rigidbody-object to move. even if you don’t need physics, a object wich is gonna to move should have a rigidbody! if you dont need physics, set it to kinematic. it is faster. this is said by people working at unity.

hope this helps