We’ll need to know how you’re moving the character to fix this. If you’re just using the ‘loc’ on logic bricks, then your object won’t obey physics properly. The general thing to do is either to:
- Apply zero speed to the player when you’re not wanting him to move
- Apply a force to reduce the players speed when you don’t him to move
The servo motion logic brick is a rather handy one, as it accepts zero as a valid target speed, and you can select how much force it applies on which axis to try achieve the target speed.
Dynamic objects do not respond to torques, only to forces. There are two ways to overcome this issue:
- Change the physics type to rigid body. This does present the potential issue of the character falling over (it will happen)
- Use a raycast and the hitnormal to set the player’s orientation.
I think one of the constraint logic bricks does this (Force Field with Rot Fh enabled. Set it’s force to zero so it only effects the rotation, enable per, set direction to -z, set a distance for how far away to detect a surface).