Решил перенести управление для игры от первого лица на андроид на новый 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;
}
}
}
Какой самый безболезненный способ сделать этот перенос без костылей?