Как мне запрограммировать область сенсорного ввода в Unity? - PullRequest
0 голосов
/ 11 апреля 2020

Я знаю, что это, вероятно, неправильное направление для метода, но я хочу запрограммировать кнопку выстрела для моей игры Android, и из того, что я понял, это должно как-то сработать, но оно не распознает сенсорный ввод:

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

public class ShotButton : MonoBehaviour
{
    private Camera cam;
    Touch touch1, touch2;
    private float distance1, distance2;
    public static bool timeF1 = false, timeF2 = false;
    // Start is called before the first frame update
    void Start()
    {
        cam = Camera.main;
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.touchCount > 0)
        {
            touch1 = Input.GetTouch(0);
            if (touch1.phase == TouchPhase.Began)
            {
                distance1 = Vector2.Distance(gameObject.transform.position, cam.ScreenToWorldPoint(new Vector3(touch1.position.x, touch1.position.y, 0)));
                if (distance1 < 2)
                {
                    timeF1 = true;
                    Debug.Log("press");
                }
            }
            if (timeF1 == true && touch1.phase == TouchPhase.Ended)
            {
                timeF1 = false;
                Debug.Log("lift");
            }
            if (Input.touchCount > 1)
            {
                touch2 = Input.GetTouch(1);
                if (touch2.phase == TouchPhase.Began)
                {
                    distance2 = Vector2.Distance(gameObject.transform.position, cam.ScreenToWorldPoint(new Vector3(touch2.position.x, touch2.position.y, 0)));
                    if (distance2 < 2)
                    {
                        timeF2 = true;
                    }
                }
                if (timeF2 == true && touch2.phase == TouchPhase.Ended)
                {
                    timeF2 = false;
                }
            }
        }
    }
}

То, что я в основном хотел сделать, это иметь периметр вокруг моего спрайта кнопки (он не находится под объектом canvas как объект пользовательского интерфейса, я знаю, что это то, что вам обычно говорят программировать, но я все еще пытаюсь чтобы понять, что здесь не работает), и если в области спрайта происходит одно из двух одновременных касаний (как должно быть, кнопки выстрела и области прицеливания), зарегистрируйте bool как «true», который затем вызывается внутри скрипта, порождая выстрелы и регистрирует, как долго это было «истинно», чтобы он мог загружать разные силы выстрела. Метод съемки работает сам по себе, так как метод, который использовал щелчки мышью, работал раньше, но я не могу зарегистрировать касание.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...