In our movement script every frame we were checking if the player was attempting to move, and subtracting our target velocity (0 if the character wasn't trying to move) from our current velocity. So if we were still and the character was trying to move, we would start moving, and if we stopped trying to move, the character would be slowed down to a velocity of 0. This means that every time we applied a force to that character, the next frame they would be slowed down to a stop. However, we were handling jumping (movement in the vertical direction) differently.
Therefore in actuality, the vertical movement wasn't the problem, and the horizontal movement was. When we saw that our push ability didn't move the character very far, we vastly increased the force at which we were applying the ability. This made the forward movement seem a little more correct, but insanely increased the vertical force.
Our solution was to revamp the way we were doing movement, and not push the player to a stop any longer. This means we now have to rely on actual physics for the character to come to stop, such as air drag and friction. After readjusting some values our movement is back to normal, and we finally feel comfortable with our push ability.
We have the following variables that we can adjust to modify the finer movement mechanics of how the game runs:
- Static Friction
- Dynamic Friction
- Air Drag/Resistance
- Bounciness (we have not messed with this yet)