I’m using Photon Fusion NetworkCharacterController.The problem appears on client side. Feels like Player object just getting snaped back into starting position every frame and cannot move from point it stands at.
After debuging I found the problem is this line
moveDirection = mainCam.transform.TransformDirection(input);
PlayerController:
public Camera mainCam;
Vector3 input;
Vector3 moveDirection;
public override void Spawned()
{
base.Spawned();
if (HasInputAuthority)
{
mainCam = Camera.main;
CameraController.onPlayerSpawned?.Invoke(transform);
}
}
public override void FixedUpdateNetwork()
{
base.FixedUpdateNetwork();
if (GetInput(out InputData data))
{
input = data.direction.normalized;
UpdateMoveDir();
networkCharacterController.Move(moveDirection);
}
}
void UpdateMoveDir()
{
if (mainCam == null) return;
moveDirection = mainCam.transform.TransformDirection(input);
if (input.magnitude > 0.01f)
{
var lookRotation = Quaternion.LookRotation(moveDirection);
transform.rotation = Quaternion.Lerp(transform.rotation, lookRotation, 25f * FusionLauncher.Instance.Runner.DeltaTime);
}
}
unfortunately I have no idea how could fix this issue and keep the functionlaity.