Let's examine your Update function.
void Update()
{
mDir = hit.point - transform.position;
if(transform.position != hit.point) characterController.Move(gravityPower * Time.deltaTime);
characterController.Move(mDir.normalized * Time.deltaTime * speed);
}
Your 'mDir' gets set every update. Regardless of whether this is a player-controlled GamePlayer, or another player's. The 'mDir' you set in the RFC call gets overwritten on the very next update.
Your 'direction' is not actually direction. It's just a delta vector. Direction implies a normalized vector.
For some reason you apply gravity only if the transform position is not equal to the hit position.
I'd look further, but 3 lines of code in the update already uncovers 3 issues... You really should debug your code more. I recommend commenting it thoroughly in english -- every single line. Use it to validate the flow of your logic.