Problem with touch panel jumping camera rotation (Mobile FPS)
Hello! I'm really new to mobile development and i've been at this problem for a long time now, i'm unsure on what to do to fix it because I've tried so many different approaches to repair the problem, yet it doesn't work
I'm having a problem where i'm trying to create a mobile first person game, and I have a touch panel where you can hold your finger and drag to look around and the problem is that for whatever reason, when you tap with another finger somewhere else on the screen, the camera's rotation will jump to another rotation, even if you use another finger outside of the panel to tap a joystick
I'm unsure what to do, i've tried disabling multitouch on the touchpanel script, resizing the panel, etc. nothing works. I really want to make it so this script ignores any other input other than the first finger, and doesn't do anything when you tap outside of its field panel Any ideas on what I can do? https://youtu.be/RMyIalJbRD4
using UnityEngine;
using UnityEngine.EventSystems;
public class FixedTouchField : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
public Vector2 TouchDist;
public Vector2 PointerOld;
protected int PointerId;
public bool Pressed;
// Use this for initialization
void Start()
{
Input.multiTouchEnabled = false;
}
// Update is called once per frame
void Update()
{
if (Pressed)
{
if (Input.touchCount > 0)
{
if (Input.GetTouch(0).phase == TouchPhase.Began)
{
print(Input.touchCount);
}
else if (Input.GetTouch(0).phase == TouchPhase.Moved)
{
TouchDist = Input.touches[PointerId].position - PointerOld;
PointerOld = Input.touches[PointerId].position;
}
else if (Input.GetTouch(0).phase == TouchPhase.Stationary)
{
TouchDist = new Vector2(Input.mousePosition.x, Input.mousePosition.y) - PointerOld;
PointerOld = Input.mousePosition;
}
}
}
else
{
TouchDist = new Vector2();
}
}
public void OnPointerDown(PointerEventData eventData)
{
if (Pressed) return;
Pressed = true;
PointerId = eventData.pointerId;
PointerOld = eventData.position;
}
public void OnPointerUp(PointerEventData eventData)
{
Pressed = false;
}
}