Erro em receber input touch

Olá galera, sou novo aqui no fórum e também na criação de jogos. comecei a criar meu primeiro jogo e já fiz boa parte dele com o que já aprendi aqui no curso Desenvolvedor Unity, porém empaquei em uma parte que não consigo resolver, já pesquisei bastante e nada.

Eu quero que ao clicar em um objeto (imagem) pelo jogador, seja iniciado uma animação dessa mesma imagem, e também de um panel que aparece na tela. Por isso utilizei o Player Input da mesma forma que é ensinado no Construção Extrema, aplico em um manager que vai chamar o event de callback para que a animação seja iniciada quando o jogador fizer um “Touch”. Porém, a diferença é que: Para que isso aconteça o jogador precisa clicar em cima do objeto (imagem).
Segue código:

using UnityEngine;
using UnityEngine.InputSystem;

public class TouchManager : MonoBehaviour
{
    public RectTransform rectTransform;
    private PlayerInput playerInput;

    private void Awake()
    {
        playerInput = GetComponent<PlayerInput>();
    }

    public void OpenRequestAliensAnim(InputAction.CallbackContext value)
    {
        if (value.started)
        {
            if (Touchscreen.current != null && Touchscreen.current.primaryTouch.isInProgress)
            {
                // Lê a posição do toque
                Vector2 touchPosition = Touchscreen.current.primaryTouch.position.ReadValue();
                Debug.Log("Touch position: " + touchPosition);

                // Verifica se o toque está dentro do RectTransform
                if (RectTransformUtility.RectangleContainsScreenPoint(rectTransform, touchPosition, null)) // Use null para Canvas no modo "Screen Space - Overlay"
                {
                    Debug.Log("Toque dentro do objeto!");
                    Node.AnimNode(); // Chama a função desejada
                }
                else
                {
                    Debug.Log("Toque fora do objeto.");
                }
            }
        }
    }
}

Ao rodar o código, o input dado pelo jogador aparece como “infinito, -infinito”
Já tentei também métodos como Raycast e ReadValue, mas não consegui (lembrando que sou iniciante na área e não tenho certeza se errei em algo :smiling_face_with_tear:) Porém, já verifiquei o input várias vezes, o event criado tbm, o objeto que precisa ser dentro do canvas para ser RectTransform, entre tantas coisas, estou sem opções :sweat_smile:
Se alguém puder ajudar agradeço :pray:

Eu estava testando e vi que está funcionando quando eu tiro a parte do RectTransform porém, a animação acontece em qualquer clique e em qualquer lugar. Como eu quero que somente aconteça quando clicar no objeto, ao tirar o RectTransform não tenho como saber a posição do clique e se foi no objeto ou não.
Um erro que acontece é que estou usando o Press (single touch) e ao que parece ele não passa valores para vector2, apenas valor float de 1 e 0.

Não seria mais simples usar um botão ao invés de uma imagem? Já que o botão já vem com o componente de image e um sistema de interação.As animações poderiam ser chamadas nos eventos de OnClick

1 curtida

Tem razão, quebrei muito a cabeça, dessa forma é mais fácil :+1: