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 ) 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
Se alguém puder ajudar agradeço