I added in a quick print statement that gives which mode is being activated. Removes confusion of which method is on at any given moment. each works fine.
`private void FixedUpdate()
{
if (Input.GetKeyDown(KeyCode.G)) // G for Gamepad
{
isInDirectMode = !isInDirectMode; // toggle mode
if (!isInDirectMode) { print("Keyboard activated"); }
else { print("Mouse Activated"); }
}
if (isInDirectMode)
{
ProcessDirectMovement();
}
else
{
ProcessMouseMovement();
}
}
private void ProcessDirectMovement()
{
// read inputs
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
// calculate camera relative direction to move:
Vector3 m_CamForward = Vector3.Scale(Camera.main.transform.forward, new Vector3(1, 0, 1)).normalized;
Vector3 m_Move = v * m_CamForward + h * Camera.main.transform.right;
m_Character.Move(m_Move, false, false);
}`