#unity3d #android
Как реализовать Multi Touch для Unity Android. Есть кнопки и нужно просто чтобы они нажимались. Нет джойстиков и прочего, просто кнопки.
Ответы
Ответ 1
Это мой скрипт (думаю всё понятно): using UnityEngine; using System.Collections; public class MobileInput : MonoBehaviour { public void Update() { //Касания Touch[] touches = Input.touches; //Цикл for (int i = 0; i < touches.Length; i++) { Touch touch = touches[i]; if (touch.phase == TouchPhase.Began) { Ray ray = Camera.main.ScreenPointToRay(touch.position); RaycastHit hit; Debug.DrawRay(ray.origin, ray.direction, Color.cyan); //Рейкаст if (Physics.Raycast(ray, out hit, 100)) { if (hit.collider.gameObject.tag == "Fruit" && !Values.gamePaused) { } } } } } }Ответ 2
Полчай touch по индексу: var touch = Input.GetTouch(int index) У каждого тача бери позицию touch.position Проверяй state тача и область кнопок.Ответ 3
Это вешаете на вашу кнопку в цикл Update, имена у кнопок должны отличаться // счетчик касаний int i = 0; // в цикле обрабатываем все нажатия на экран while (i < Input.touchCount) { // обрабатываем касание под номером i // если палец на месте, или двигается, // или палец только коснулся экрана if (Input.GetTouch(i).phase == TouchPhase.Stationary || Input.GetTouch(i).phase == TouchPhase.Moved || Input.GetTouch(i).phase == TouchPhase.Began) { // от точки касания выпускаем "луч" и проверяем коснулся ли он нашей кнопки Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity)) { if (hit.transform.name == transform.name && hit.collider.name == collider.name) { // ваше действие } } } ++i; }
Комментариев нет:
Отправить комментарий