Задать вопрос
@LDC

Не работает Lookpad на мобильном управлении, кто знает в чем баг?

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 то правый палец не будет двигать камеру, вместо него это делает левый палец
  • Вопрос задан
  • 24 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы