Using a dynamic collision object in a platform game is hard because an object that’s affected by gravity, friction, momentum, restitution and so on can’t be easily manipulated without getting strange results. You’ll be fighting against a physics engine if trying to do non-physicsy things such as sticking to a platform in only one direction. Unless advanced physics simulation is part of the key game mechanic, you’re most likely better off with a kinematic player object.
If you’re sure a dynamic is the way to go, there are a few things you could try:
- Set the player game object as a child to the platform when it’s connecting, and then move it to root (by setting parent to nil) when not connecting.
- Set the player game object’s position every frame to match the platforms y position (to allow movement in the x axis)
- Set the player game object’s collision object’s
linear_velocity to to match the platform’s movements in the y direction
- Increase the gravity when the player touches the top part of the platform, to press against the surface.
However you do it, making a dynamic collisionobject bend to your will is going to be hard work. Good luck!