I’m working on a mouse/gamepad camera movement script but I want the mouse look to only work when right clicking. I managed to do a work around, but I’m not sure if this will break after build or not. If so, is there a better way of doing this? I’m mostly just worried about the camInputType string.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class InputManager : MonoBehaviour
{
PlayerControls playerControls;
AnimatorManager animatorManager;
public Vector2 movementInput;
public Vector2 cameraInput;
public float cameraInputX;
public float cameraInputY;
public float moveAmount;
public float verticalInput;
public float horizontalInput;
public bool sprint_Input;
public bool mouseCam_Input;
public string camInputType;
private void Awake()
{
animatorManager = GetComponent<AnimatorManager>();
}
private void OnEnable()
{
if (playerControls == null)
{
playerControls = new PlayerControls();
playerControls.PlayerMovement.Movement.performed += i => movementInput = i.ReadValue<Vector2>();
playerControls.PlayerMovement.Camera.performed += i => cameraInput = i.ReadValue<Vector2>();
playerControls.PlayerMovement.Camera.performed += ctx => camInputType = ctx.control.ToString();
playerControls.PlayerActions.MouseCam.performed += i => mouseCam_Input = true;
playerControls.PlayerActions.MouseCam.canceled += i => mouseCam_Input = false;
playerControls.PlayerActions.Sprint.performed += i => sprint_Input = true;
playerControls.PlayerActions.Sprint.canceled += i => sprint_Input = false;
}
playerControls.Enable();
}
private void OnDisable()
{
playerControls.Disable();
}
public void HandleAllInputs()
{
HandleMovementInput();
}
private void HandleMovementInput()
{
verticalInput = movementInput.y;
horizontalInput = movementInput.x;
if (camInputType != "Vector2:/Mouse/delta" || mouseCam_Input == true)
{
cameraInputY = cameraInput.y;
cameraInputX = cameraInput.x;
}
moveAmount = Mathf.Clamp01(Mathf.Abs(horizontalInput) + Mathf.Abs(verticalInput));
animatorManager.UpdateAnimatorValues(0, moveAmount);
}
}