[RESOLVIDO] Detectar qual lado da tela estou arrastando o dedo no touch?
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Detectar qual lado da tela estou arrastando o dedo no touch?
Olá, pessoal.
Eu tô precisando conseguir detectar para qual lado da tela estou arrastando o meu objeto com o dedo.
Seria mais ou menos assim:
se eu estiver arrastando para a esquerda quero que aconteça tal coisa.
Se estiver arrastando pra direita, que aconteça outra coisa.
Alguém sabe qual o comando que identifica o lado que está sendo arrastado?
O mais próximo que consegui chegar foi com o TouchPhase.Moved, porém esse só detecta o movimento, mas não o lado.
Eu tô precisando conseguir detectar para qual lado da tela estou arrastando o meu objeto com o dedo.
Seria mais ou menos assim:
se eu estiver arrastando para a esquerda quero que aconteça tal coisa.
Se estiver arrastando pra direita, que aconteça outra coisa.
Alguém sabe qual o comando que identifica o lado que está sendo arrastado?
O mais próximo que consegui chegar foi com o TouchPhase.Moved, porém esse só detecta o movimento, mas não o lado.
Atho- Membro
- PONTOS : 1912
REPUTAÇÃO : 11
Idade : 31
Áreas de atuação : Programador de Jogos Digitais em C# na Unity
Respeito as regras :
Re: [RESOLVIDO] Detectar qual lado da tela estou arrastando o dedo no touch?
TouchPhase tem outras opções... como o Began, que registra o ponto de início do toque.
https://docs.unity3d.com/ScriptReference/TouchPhase.html
Você pode salvar a posição inicial no began e calcular um valor de deslocamento, deslocamento = (posicaoAtual.x - posicaoInicial.x), se deslocamento maior que 0, tá arrastando pra um lado, menor que 0, arrastando pro outro.
https://docs.unity3d.com/ScriptReference/TouchPhase.html
Você pode salvar a posição inicial no began e calcular um valor de deslocamento, deslocamento = (posicaoAtual.x - posicaoInicial.x), se deslocamento maior que 0, tá arrastando pra um lado, menor que 0, arrastando pro outro.
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Detectar qual lado da tela estou arrastando o dedo no touch?
Sim. Isso eu até já fiz. O problema é que, quando inverto a direção sem parar de arrastar, os sinais não correspondem mais à posição. Entende?Fagner escreveu:TouchPhase tem outras opções... como o Began, que registra o ponto de início do toque.
https://docs.unity3d.com/ScriptReference/TouchPhase.html
Você pode salvar a posição inicial no began e calcular um valor de deslocamento, deslocamento = (posicaoAtual.x - posicaoInicial.x), se deslocamento maior que 0, tá arrastando pra um lado, menor que 0, arrastando pro outro.
Atho- Membro
- PONTOS : 1912
REPUTAÇÃO : 11
Idade : 31
Áreas de atuação : Programador de Jogos Digitais em C# na Unity
Respeito as regras :
Re: [RESOLVIDO] Detectar qual lado da tela estou arrastando o dedo no touch?
então nesse caso você vai ter que ir mudando posicaoInical sempre que se afastar X pixels,
posição inicial começa recebendo a posição do toque no Began.
se a distancia pra posicaoInicial for maior que x, posicaoInicial recebe posicaoAtual.
com isso você vai arrastando e sem soltar o toque ele registra mudanças de direção.
distanciaTroca = Mathf.Abs(posicaoAtual.x - posicaoInicial.x);
Note que esse valor deve ser armazenado numa variável diferente, o Mathf.Abs() serve pra deixá-lo absoluto.
posição inicial começa recebendo a posição do toque no Began.
se a distancia pra posicaoInicial for maior que x, posicaoInicial recebe posicaoAtual.
com isso você vai arrastando e sem soltar o toque ele registra mudanças de direção.
distanciaTroca = Mathf.Abs(posicaoAtual.x - posicaoInicial.x);
Note que esse valor deve ser armazenado numa variável diferente, o Mathf.Abs() serve pra deixá-lo absoluto.
Fagner- Moderador
- PONTOS : 4442
REPUTAÇÃO : 667
Áreas de atuação : Modelagem 3D, Programação.
Respeito as regras :
Re: [RESOLVIDO] Detectar qual lado da tela estou arrastando o dedo no touch?
Segui o conselho com algumas alterações personalizadas.Fagner escreveu:então nesse caso você vai ter que ir mudando posicaoInical sempre que se afastar X pixels,
posição inicial começa recebendo a posição do toque no Began.
se a distancia pra posicaoInicial for maior que x, posicaoInicial recebe posicaoAtual.
com isso você vai arrastando e sem soltar o toque ele registra mudanças de direção.
distanciaTroca = Mathf.Abs(posicaoAtual.x - posicaoInicial.x);
Note que esse valor deve ser armazenado numa variável diferente, o Mathf.Abs() serve pra deixá-lo absoluto.
Deu certo aqui. Muito obrigado.
Atho- Membro
- PONTOS : 1912
REPUTAÇÃO : 11
Idade : 31
Áreas de atuação : Programador de Jogos Digitais em C# na Unity
Respeito as regras :
Tópicos semelhantes
» [Duvida] Como Detectar se estou perto de um objeto ?
» [RESOLVIDO] Qual é a função para retirar uma textura da tela do jogo?
» Passar de cena arrastando o touch
» Detectar o lado de colisão de um Cubo / Caixa?
» [Duvida]Como saber se o está segurando um click,ou com o dedo pressionado na tela
» [RESOLVIDO] Qual é a função para retirar uma textura da tela do jogo?
» Passar de cena arrastando o touch
» Detectar o lado de colisão de um Cubo / Caixa?
» [Duvida]Como saber se o está segurando um click,ou com o dedo pressionado na tela
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos