I have a bike that needs to rotate 180 degrees when a button is pressed. But when rigidbody rotates it simultaneously rotates wheels in opposite side of the bike. So I need to rotate only the model, light and a particle system around the body. How can I do that?

The easiest way would be to parent everything you want to rotate to an empty game object and then just rotate that.

Depending on how you have everything set up it may be easier to parent everything when the button is pressed, rotate, then unparent.

Make the model a child object, and rotate only that. Or same idea, make an empty child, and below that put the model, particles … anything that should perform a cosmetic rotate. Rotate the empty. That second way seems more complicated, but the empty “feels like” a folder, once you get used to it.

Main bike object has rigidbody, script. Child “model” has no rigidbody. Collider(s) might be on main bike, child bike, or both, depending.

One tricky part is if you were playing with the model, ex: renderer.material.color=. Now you have to use transform.Find("bike").renderer.material=. Or, standard trick, save Transform theModel = transform.Find("bike"); one time at Start.