En este momento estás viendo ¿Unity cómo manejar el evento onTouch?

 – Unity

¿Unity cómo manejar el evento onTouch? – Unity

¿Unity cómo manejar el evento onTouch?

– UnityAssets3Free

bienvenido , soy juansito y hoy os traigo
esta unity pregunta

Agrego el objeto Button UI y agrego el script C# con función pública. Para el botón, agrego el componente Event Trigger, hago eventos (Clic con el puntero y el puntero hacia abajo) y redirijo a mi función public void onClick ()

En PC el código funciona, pero cuando cargo el juego a android y toca el objeto, el código no funciona.

¿Cómo hacer el evento onTouch?

3 respuestas 3

Creo que OnMouseDown verificará cada cuadro si hay una entrada del mouse, es como actualizar, por lo que debe tocar en la mejilla Actualizar y con el toque tendrá más control como Touch Phase para detectar si el toque comienza o se movió o se movió, etc. tienes que comprobar

 if(input.touchCount > 0)

void Update() 
     if (Input.touchCount > 0)
         print("exist a touch");

             if(Input.GetTouch(0).phase == TouchPhase.Began)
                 print("Touch begans");
             
             if(Input.GetTouch(0).phase == TouchPhase.Ended)
                 print("Touch Ended");
             
      
    

chCount > 0)& inside this you can cheek for touch Phase

Los toques no son clics

Para manejar la entrada táctil, debe verificar Input.touchCount y luego refiérase a cada toque con Input.GetTouch. Tenga en cuenta que cada Touch tiene uno una identificación que será único por dedo y consistente en todos los fotogramas.

no hay fácil OnClick como métodos para los toques, ya que los toques pueden ser mucho más complejos (toque, toque prolongado, arrastre, etc.), por lo que tendrá que verificar el interior Update() y administre la conversión de datos táctiles a análogos de mouse usted mismo.

Puede usar los siguientes pasos para manejar eventos táctiles en su aplicación Unity3D.

  • Encender Input.GetTouch conseguir un Touch estructura.

  • Input.GetTouch devuelve Touch para un toque de pantalla seleccionado (por ejemplo, con un dedo o un lápiz). Toque describe el toque de la pantalla. El argumento índice selecciona el toque de pantalla.

  • Input.touchCount da el número actual de toques de pantalla. si Input.touchCount es mayor que cero, el índice GetTouch define qué toque de pantalla debe verificarse. Touch devuelve una estructura con los detalles táctiles de la pantalla. Cada toque adicional en la pantalla utiliza un Input.touchCount.

  • GetTouch devuelve una estructura de anillo. Use cero para obtener el primer toque en la pantalla. Como ejemplo, Touch incluye una posición en píxeles.

Por ejemplo:

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;
            
        
    

En este ejemplo, estamos tratando de instanciar un objeto al tocarlo.

También puede usar el siguiente modelo para manejar las interacciones táctiles.

void Update () 
    // Handle native touch events
    foreach (Touch touch in Input.touches) 
        HandleTouch(touch.fingerId, Camera.main.ScreenToWorldPoint(touch.position), touch.phase);
    

    // Simulate touch events from mouse events
    if (Input.touchCount == 0) 
        if (Input.GetMouseButtonDown(0) ) 
            HandleTouch(10, Camera.main.ScreenToWorldPoint(Input.mousePosition), TouchPhase.Began);
        
        if (Input.GetMouseButton(0) ) 
            HandleTouch(10, Camera.main.ScreenToWorldPoint(Input.mousePosition), TouchPhase.Moved);
        
        if (Input.GetMouseButtonUp(0) ) 
            HandleTouch(10, Camera.main.ScreenToWorldPoint(Input.mousePosition), TouchPhase.Ended);
        
    


private void HandleTouch(int touchFingerId, Vector3 touchPosition, TouchPhase touchPhase) 
    switch (touchPhase) 
    case TouchPhase.Began:
        // TODO
        break;
    case TouchPhase.Moved:
        // TODO
        break;
    case TouchPhase.Ended:
        // TODO
        break;
    

Para más: https://docs.unity3d.com/ScriptReference/Input.GetTouch.html

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

sin mas,espero que te funcione

Deja una respuesta