Moving children objects with parent

I’m running into trouble trying to get children objects to move with the object they’re parented to.

I have a 2D game that is on the X/Y plane (Unity’s default). However it has a top down view instead of a side view.

When a character steps onto a moving surface I’d like them to move with it. I’d also like to have them be able to run around on the surface as it’s moving through the world.

To do this, I tried to parent the character to the surface. This didn’t work, when the surface moved away the character remained where he was. It might be because I had to set gravity to zero on the character’s rigidbody (otherwise it would fall towards the bottom of the screen).

I also tried destroying the character’s rigidbody component, which did work, but then he can’t move on his own around the moving surface.

Any tips or suggestions on how I could attack this problem?

Thanks for any help!

Hi , i know that the first person controller from unity standard assets has that functionality i dont really know how it works.

But you can create an OnTriggerStay2D to get the velocity of the plataform.

 function OnTriggerStay2D(PlatformCollider : Collider2D){
    	if(PlatformCollider.tag == "Plataform"){
    		var platformVelocity = PlatformCollider.GetComponent(Rigidbody2D).velocity.x;
    		rigidbody2D.velocity.x = platformVelocity;

For this to work your platform and player should have rigidbody2D and the platform must be moved by addForce or Velocity and not by transforming or animating the position.

Remember to use 2D Colliders and 2D RigidBodies , and to set your player Collider to “IsTrigger” you should add 2 2D Colliders to your player one for the trigger events and other for collisions.

I left you the test project i made. press left or right to move the plataform and press jump (space bar) to move the “player” to the right.