Я делаю игру, похожую на Wordscapes, я пытаюсь найти способ выбрать буквы, проводя пальцем. Я новичок в мобильном вводе, поэтому я не уверен, что делать дальше. Вот мой входной скрипт, который я нашел в интернете и немного изменил по своему вкусу. Он работает, как и ожидалось, но обнаруживает только одно движение пальцем. Как запустить событие onclick, когда пользователь проводит пальцем по кнопке? Если возможно, я бы хотел отправить эту информацию делегату OnSwipe (поскольку я использую ее из других сценариев для обработки событий свайпов)
Я подумал, что лучевая передача с камеры будет лучшим вариантом. Может быть, кто-то может помочь мне изменить этот код, так как я не совсем понимаю, как все это сделать. Спасибо!
// Class used for detecting touch input (Swipe Exclusive)
public class TouchInput: MonoBehaviour {
public static event Action<SwipeData> OnSwipe = delegate { };
private Vector2 startPosition;
private Vector2 endPosition;
private float moveDistanceY = 0f;
private float moveDistanceX = 0f;
private SwipeDirection sDirection = new SwipeDirection();
/// <summary>
/// Update is called once per frame
/// </summary>
private void Update() {
foreach (Touch touch in Input.touches) {
if (touch.phase == TouchPhase.Began) {
endPosition = touch.position;
startPosition = touch.position;
} else if (touch.phase == TouchPhase.Ended) {
startPosition = touch.position;
DetectSwipe();
}
}
}
/// <summary>
/// Handles the detection of swipes
/// </summary>
private void DetectSwipe() {
moveDistanceY = Mathf.Abs(startPosition.y - endPosition.y);
moveDistanceX = Mathf.Abs(startPosition.x - endPosition.x);
if (moveDistanceX > 20f || moveDistanceY > 20f) {
if (moveDistanceY > moveDistanceX) {
sDirection = startPosition.y - endPosition.y > 0 ? SwipeDirection.Up : SwipeDirection.Down;
SendSwipe(sDirection);
} else {
sDirection = startPosition.x - endPosition.x > 0 ? SwipeDirection.Right : SwipeDirection.Left;
SendSwipe(sDirection);
}
endPosition = startPosition;
}
}
/// <summary>
/// Sends data about the swipe to the "OnSwipe" Delegate
/// </summary>
private void SendSwipe(SwipeDirection dir) {
SwipeData swipeData = new SwipeData() {
Direction = dir,
StartPosition = startPosition,
EndPosition = endPosition
};
OnSwipe(swipeData);
}