не всегда засчитываются клики в кликере

Я делаю кликер в котором есть область клика и объекты находящиеся в этой зоне клика. скрипт написан так, чтобы при клике в области давались очки, но только если клик был совершён не по объекту. И так же чтобы очки не давались когда игрок просто двигает камеру. Так вот, у меня проблема с тем, что после некоторых действий (клик двумя пальцами, приближение и отдаление камеры двумя пальцами и движение камеры пальцем) несколько кликов не засчитывается. Так же не засчитываются одновременные клики. Неделю уже сижу над скриптом, не знаю как это исправить.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Click : MonoBehaviour
{
    private Stats.TypeValue typeValue;
    public outNumInfo addNum;
    private Vector2 touch;
    public Canvas spawnCanvas;
    private outNumInfo addNumOnj;

    private bool isBorderZoneClick = false;
    private bool touchNoMove = true;

    public void ChangeVal(int index)
    {
        isBorderZoneClick = true;
        typeValue = (Stats.TypeValue)index;
    }

    private void LateUpdate()
    {
        if (Input.touchCount > 0)
        {
            Touch tch = Input.GetTouch(0);

            if (tch.phase == TouchPhase.Ended && touchNoMove && isBorderZoneClick)
            {
                switch (typeValue)
                {
                    case Stats.TypeValue.starDust:
                        Stats.StarDust.add(Stats.SDForClick.get() * Stats.Multiplier.multiplier);
                        break;
                    case Stats.TypeValue.food:
                        Stats.Food.add(Stats.FoodForClick.get() * Stats.Multiplier.multiplier);
                        break;
                    case Stats.TypeValue.money:
                        Stats.Money.add(Stats.MoneyForClick.get() * Stats.Multiplier.multiplier);
                        break;
                }

                touch = Camera.main.ScreenToWorldPoint(tch.position);
                if ((typeValue == Stats.TypeValue.starDust && Stats.SDForClick.get() != 0)
                    || (typeValue == Stats.TypeValue.food && Stats.FoodForClick.get() != 0)
                    || (typeValue == Stats.TypeValue.money && Stats.MoneyForClick.get() != 0))
                {
                    addNumOnj = Instantiate(addNum, spawnCanvas.transform);
                    addNumOnj.transform.position = new Vector3(touch.x, touch.y, 0);
                    isBorderZoneClick = false;
                    addNumOnj.GetComponent<outNumInfo>().typeValue = typeValue;
                }
            }

            if (tch.phase == TouchPhase.Moved)
            {
                touchNoMove = false;
            }
            if (tch.phase == TouchPhase.Stationary)
            {
                touchNoMove = true;
            }
        }
    }

    private void Update()
    {
        if (Input.GetMouseButton(0))
        {
            isBorderZoneClick = false;
        }
    }
}

Ответы (0 шт):