using UnityEngine;
using UnityEngine.InputSystem;
public class MobileCameraLook : MonoBehaviour
{
[SerializeField] private Transform _playerBody;
[SerializeField] private PlayerControllerSettings _playerControllerSettings;
[SerializeField] private CameraRotation _cameraRotation;
[SerializeField] private RectTransform _rightSideUIArea;
private InputSystem _inputActions;
private Vector2 _lookInput;
private void Awake()
{
_inputActions = new InputSystem();
}
private void OnEnable()
{
_inputActions.Enable();
_inputActions.Mobile.TouchDelta.performed += OnTouchDeltaPerformed;
_inputActions.Mobile.TouchDelta.canceled += OnTouchCanceled;
}
private void OnDisable()
{
_inputActions.Mobile.TouchDelta.performed -= OnTouchDeltaPerformed;
_inputActions.Mobile.TouchDelta.canceled -= OnTouchCanceled;
_inputActions.Disable();
}
private void OnTouchDeltaPerformed(InputAction.CallbackContext context)
{
if (IsTouchOnRightSide())
{
_lookInput = context.ReadValue<Vector2>();
}
else
{
_lookInput = Vector2.zero;
}
}
private void OnTouchCanceled(InputAction.CallbackContext context)
{
_lookInput = Vector2.zero;
}
private void Update()
{
_cameraRotation.RotateCamera(_lookInput,_playerBody);
}
private bool IsTouchOnRightSide()
{
if (Touchscreen.current == null) return false;
foreach (var touch in Touchscreen.current.touches)
{
if (touch.press.isPressed)
{
Vector2 touchPosition = touch.position.ReadValue();
if (_rightSideUIArea.rect.Contains(_rightSideUIArea.InverseTransformPoint(touchPosition)))
{
return true;
}
}
}
return false;
}
}
Сделал Lookpad на мобильные устройства для поворота камеры, он работает только там где RectTransform который в коде ( он сделан на правой стороне экрана) и если уже в самом управлении нажать сначала на правую сторону (где RectTransform) а потом уже на левую где джойстик то все нормально, но если сделать наоборот то поворачивать камеру будет не правый палец а левый.
Причем если поставить сначала палец на левую часть где нет RectTransform и потом положить палец на RectTransfor то правый палец не будет двигать камеру, вместо него это делает левый палец