Problema cambiando de GUITextures a UI Images
Hola chicos, por favor necesito su ayuda. Hace mucho que no toco Unity y realmente no sé cómo solucionar este problema.
Estoy cambiando todas mis GUITextures a UI Images y no puedo obtener los mismos resultados que solía tener con mis GUITextures anteriores. En mi versión de GUITextures, solía detectar cuándo (por ejemplo) se presionaba mi botón de disparo en un teléfono móvil usando esta función (he tomado solo un pedazo concreto para no alargarlo mucho):
Cita:
public virtual IEnumerator botones()
{
foreach (Touch touch in Input.touches)
{
if ((touch.phase == TouchPhase.Stationary) && this.fireButton.HitTest(touch.position))
{
this.shoot = true;
}
else
{
if ((touch.phase == TouchPhase.Ended) && this.fireButton.HitTest(touch.position))
{
this.shoot = false;
}
}
}
[COLOR=#4D4DFF][FONT=Inter]}
Lo que me gustaba de esto era lo siguiente:
1.- Para disparar pulsa el botón rojo.
2.- Para disparo continuo, pulsa el botón rojo y desliza ligeramente el dedo antes de levantarlo.
El problema es que no tengo la función "HitTest" en los UI Image. ¿Hay algo similar que pueda usar? No quiero cambiar la estructura de mi código porque afectará otras cosas. Me gustaría detectar desde el mismo código si se toca la UI Image (fireButton).
Muchas gracias por la ayuda.
Has probado con "raycast" en Unity UI
Hola. ¿Has probado con "raycast" en Unity UI, puedes utilizar eventos de raycast para detectar interacciones con elementos de imagen. La detección de clics o interacciones se basa en la interacción con el componente GraphicRaycaster y la implementación de interfaces como IPointerClickHandler o IPointerDownHandler.
Aquí hay un ejemplo de cómo puedes detectar clics en un elemento de imagen de Unity UI utilizando eventos de raycast:
Código:
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class ImageClickHandler : MonoBehaviour, IPointerClickHandler
{
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("Clic en la imagen");
}
}
Ya comentarás cómo te va. Un saludo.