// Fixed update is called in sync with physics private void FixedUpdate() { // read inputs // float h = CrossPlatformInputManager.GetAxis("Horizontal"); float h = CustomInputManager.GetAxis("Horizontal", CustomInputManager.InputMode.Gameplay); // float v = CrossPlatformInputManager.GetAxis("Vertical"); float v = CustomInputManager.GetAxis("Vertical", CustomInputManager.InputMode.Gameplay); bool crouch = Input.GetKey(KeyCode.C); // calculate move direction to pass to character if (m_Cam != null) { // calculate camera relative direction to move: m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized; m_Move = v*m_CamForward + h*m_Cam.right; } else { // we use world-relative directions in the case of no main camera m_Move = v*Vector3.forward + h*Vector3.right; } #if !MOBILE_INPUT // walk speed multiplier and clamp if (Input.GetKey(KeyCode.LeftShift)) { m_Move *= 0.5f; m_Move = m_Move.ClampMaxMagnitude(0.5f); } #endif // pass all parameters to the character control script m_Character.Move(m_Move, crouch, m_Jump); m_Jump = false; }