@FogyX

Как можно переписать этот скрипт на новый InputSystem?

Решил перенести управление для игры от первого лица на андроид на новый InputSystem, чтобы оно было доступно и на пк.
Камнем преткновения стало управление камерой - в старой системе игрок с помощью невидимой панельки на правой половине мог двигать камеру (как во многих FPS играх).
Испытываю трудности с логикой, которую я должен прописать с новой системой ввода, не нарушив основной принцип работы.

Вот старый скрипт от той панельки:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

namespace PlayerBehaviour {

    [RequireComponent(typeof(Image), typeof(RectTransform))]
    public class CameraController : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
    {
        public Vector2 RotationInputVector;

        private bool _isDragging;

        private void Update()
        {
            if (!_isDragging)
            {
                if (RotationInputVector != Vector2.zero)
                {
                    RotationInputVector = Vector2.zero;
                }

                return;
            }

            
            foreach(Touch touch in Input.touches)
            {
                if (touch.phase == TouchPhase.Moved)
                {
                    RotationInputVector.x = touch.deltaPosition.x;
                    RotationInputVector.y = touch.deltaPosition.y;
                    RotationInputVector.Normalize();
                    print(RotationInputVector.ToString());
                }
                else if (touch.phase == TouchPhase.Stationary)
                {
                    RotationInputVector = Vector2.zero;
                }
                else if (touch.phase == TouchPhase.Ended)
                {
                    RotationInputVector = Vector2.zero;
                }
            }
        }

        public void OnPointerDown(PointerEventData pointerEventData)
        {
            _isDragging = true;
        }

        public void OnPointerUp(PointerEventData pointerEventData)
        {
            _isDragging = false;
        }
    }

}


Какой самый безболезненный способ сделать этот перенос без костылей?
  • Вопрос задан
  • 68 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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