Input.GetTouch
Declaration
public static Touch GetTouch(int index);Параметры
| Параметр | Описание |
|---|---|
| индекс | Сенсорный ввод на экране устройства. |
Возвращаемое значение
Касание Сведения о касании в структуре.
Описание
Вызов Input.GetTouch для получения Touch struct.
Примечание: Этот API является частью устаревшего менеджера ввода. Рекомендуется не использовать этот API в новых проектах. Для новых проектов используйте пакет Input System. Чтобы узнать больше о вводе, см. Вводимые ресурсы.
Input.GetTouch возвращений Touch для выбранного касания экрана (например, с пальца или стилуса). Touch описывает касание экрана. index аргумент выбирает сенсорный экран.
Input.touchCount предоставляет текущее число касаний экрана. Если Input.touchCount больше нуля, GetTouch index устанавливает, какой экран касания проверить. Touch возвращает a struct с деталями касания экрана. Каждое дополнительное касание экрана использует увеличивающуюся Input.touchCount.
GetTouch возвращает a Touch структура. Используйте ноль, чтобы получить первое касание экрана. Например, Touch включает position в пикселях.
Временные переменные не выделяются.
using UnityEngine; using System.Collections; using UnityEngine.iOS;
// Input.GetTouch example. // // Attach to an origin based cube. // A screen touch moves the cube on an iPhone or iPad. // A second screen touch reduces the cube size.
public class ExampleClass : MonoBehaviour { private Vector3 position; private float width; private float height;
void Awake() { width = (float)Screen.width / 2.0f; height = (float)Screen.height / 2.0f;
// Position used for the cube. position = new Vector3(0.0f, 0.0f, 0.0f); }
void OnGUI() { // Compute a fontSize based on the size of the screen width. GUI.skin.label.fontSize = (int)(Screen.width / 25.0f);
GUI.Label(new Rect(20, 20, width, height * 0.25f), "x = " + position.x.ToString("f2") + ", y = " + position.y.ToString("f2")); }
void Update() { // Handle screen touches. if (Input.touchCount > 0) { Touch touch = Input.GetTouch(0);
// Move the cube if the screen has the finger moving. if (touch.phase == TouchPhase.Moved) { Vector2 pos = touch.position; pos.x = (pos.x - width) / width; pos.y = (pos.y - height) / height; position = new Vector3(-pos.x, pos.y, 0.0f);
// Position the cube. transform.position = position; }
if (Input.touchCount == 2) { touch = Input.GetTouch(1);
if (touch.phase == TouchPhase.Began) { // Halve the size of the cube. transform.localScale = new Vector3(0.75f, 0.75f, 0.75f); }
if (touch.phase == TouchPhase.Ended) { // Restore the regular size of the cube. transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); } } } } }
Второй пример:
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public GameObject projectile; public GameObject clone;
void Update() { for (int i = 0; i < Input.touchCount; ++i) { if (Input.GetTouch(i).phase == TouchPhase.Began) { clone = Instantiate(projectile, transform.position, transform.rotation) as GameObject; } } } }
Третий пример:
using UnityEngine; using System.Collections;
public class ExampleClass : MonoBehaviour { public GameObject particle; void Update() { for (int i = 0; i < Input.touchCount; ++i) { if (Input.GetTouch(i).phase == TouchPhase.Began) { // Construct a ray from the current touch coordinates Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
// Create a particle if hit if (Physics.Raycast(ray)) { Instantiate(particle, transform.position, transform.rotation); } } } } }