I am implementing horizontal moving platforms in my 2D platformer.
The way it's implemented currently, when my player lands on a moving platform, he is reparented to it so that his position updates in line with the moving platform.
The player is moved perfectly in sync with the platform, which has a constant velocity. The player's acceleration and velocity are not altered in any way to achieve this movement. It's free because the player is now a child of the platform.
Because I use local position in all of my player's movement code, my player is still free to move left and right relative to the moving platform.
This works really well.
I notice, however, that when my player runs along the platform in the same direction as it's moving, there is a sense of moving fast. When he runs against the platform, there is a sense of sluggishness.
I know that relative to the platform my player is moving at the same velocity in both directions, but because he traverses more global distance than normal when moving with the platform, there is a sense of speed, and because he traverses less global distance than normal when moving against the platform, there is a sense of sluggishness.
I believe the sense of speed and sluggishness are like psychological illusions. If my player stands on my moving platforms, it takes the same amount of time for him to traverse them from left to right as right to left, so I know that local velocity with respect to the platforms is working. It's more of just a psychological effect I'm trying to mitigate, I think.
So my question is: Are there any ways of mitigating these effects? How do you deal with this problem?
I am working in Godot, but would prefer an engine-neutral explanation of ways to avoid this effect.
It may or may not be relevant, but I have a smoothly scrolling camera which lerps to my player's position, as well as parallax backgrounds.