CinemachineTouchInputMapper.cs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using Cinemachine;
  2. using UnityEngine;
  3. /// <summary>
  4. /// This is an add-on behaviour that globally maps the touch control
  5. /// to standard input channels, such as mouse X and mouse Y.
  6. /// Drop it on any game object in your scene.
  7. /// </summary>
  8. public class CinemachineTouchInputMapper : MonoBehaviour
  9. {
  10. /// <summary>Sensitivity multiplier for x-axis</summary>
  11. [Tooltip("Sensitivity multiplier for x-axis")]
  12. public float TouchSensitivityX = 10f;
  13. /// <summary>Sensitivity multiplier for y-axis</summary>
  14. [Tooltip("Sensitivity multiplier for y-axis")]
  15. public float TouchSensitivityY = 10f;
  16. /// <summary>Input channel to spoof for X axis</summary>
  17. [Tooltip("Input channel to spoof for X axis")]
  18. public string TouchXInputMapTo = "Mouse X";
  19. /// <summary>Input channel to spoof for Y axis</summary>
  20. [Tooltip("Input channel to spoof for Y axis")]
  21. public string TouchYInputMapTo = "Mouse Y";
  22. void Start()
  23. {
  24. CinemachineCore.GetInputAxis = GetInputAxis;
  25. }
  26. private float GetInputAxis(string axisName)
  27. {
  28. if (Input.touchCount > 0)
  29. {
  30. if (axisName == TouchXInputMapTo)
  31. return Input.touches[0].deltaPosition.x / TouchSensitivityX;
  32. if (axisName == TouchYInputMapTo)
  33. return Input.touches[0].deltaPosition.y / TouchSensitivityY;
  34. }
  35. return Input.GetAxis(axisName);
  36. }
  37. }