Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

movimento por tocar e arrastar no Android

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
Sr.Zero
Novato
Novato
Reações: 0
Mensagens: 4

movimento por tocar e arrastar no Android

Mensagem por Sr.Zero » Ter Fev 28, 2017 2:04 pm

Olá, primeiramente eu quero pedir desculpa caso ja tenha algum topico sobre isso, talvez eu esteja usando as palavras chaves erradas pq não encontrei.

Eu gostaria de saber como criar comandos por toque-arraste no android.
Ex: arrastar o dedo na tela na vertical de cima para baixo faz o personagem andar para baixo ( até que seja parado por colisão, o que não vem ao caso)
só preciso reconhecer 4 direções de movimento para um puzzle que pretendo fazer

Avatar do usuário
TootyDev
Novato
Novato
Reações: 0
Mensagens: 10

Re: movimento por tocar e arrastar no Android

Mensagem por TootyDev » Ter Fev 28, 2017 5:55 pm

Neste Fórum são pouquíssimas pessoas que mechem realmente com Android então eu recomendo a você ver as Vídeo Aulas de Gringos pois eles são bem mais experientes no assunto, vou listar alguns vídeos gringos que falam a respeito do Movimento pelo Android

Shaun Spalding: https://www.youtube.com/watch?v=AfJNtaG8NRA
EscueladeVideoJuegos: https://www.youtube.com/playlist?list=P ... 3MkIwM6zkU
ColloseusX: https://www.youtube.com/watch?v=3RXsvUy ... sgeA7HPbdX

ESPERO TER AJUDADO!

Avatar do usuário
Willy
Novato
Novato
Reações: 0
Mensagens: 18

Re: movimento por tocar e arrastar no Android

Mensagem por Willy » Qua Mar 01, 2017 10:24 pm

Olá Sr. Zero!

O que você precisa é de um sistema de Swipe. Basicamente, um swipe consiste em pegar a posição x/y do toque inicial e comparar com a posição x/y do momento em que você deixa de tocar a tela. Com essas duas coordenadas, você consegue pegar o ângulo que ela forma, e então, identificar para qual direção o jogador fez o swipe.

Antes da migração, existia um tutorial meu por aqui que acabei de ficar de repostar. MAS, pra sua sorte, eu tenho ele salvo e vou disponibilizar um lindo PDF pra você baixar.

Avatar do usuário
TootyDev
Novato
Novato
Reações: 0
Mensagens: 10

Re: movimento por tocar e arrastar no Android

Mensagem por TootyDev » Qua Mar 01, 2017 10:58 pm

Willy escreveu:Olá Sr. Zero!

O que você precisa é de um sistema de Swipe. Basicamente, um swipe consiste em pegar a posição x/y do toque inicial e comparar com a posição x/y do momento em que você deixa de tocar a tela. Com essas duas coordenadas, você consegue pegar o ângulo que ela forma, e então, identificar para qual direção o jogador fez o swipe.

Antes da migração, existia um tutorial meu por aqui que acabei de ficar de repostar. MAS, pra sua sorte, eu tenho ele salvo e vou disponibilizar um lindo PDF pra você baixar.
Willy, você também teria um PDF para detectar o toque do jogador na tela do celular ??

Avatar do usuário
Rodrigo Santiago
Colaborador
Colaborador
Reações: 0
Mensagens: 273

Re: movimento por tocar e arrastar no Android

Mensagem por Rodrigo Santiago » Qui Mar 02, 2017 8:51 am

TootyDev, no GameMaker para android, o mouse e todos os eventos relacionados (click, press,releases etc) são convertidos para touch. Pra fazer um swipe vc pode fazer o seguinte :

Create

Código: Selecionar todos

swipe_x = -1;
swipe_y = -1;
Quando o Mouse (touch) pressionar(pressed)

Código: Selecionar todos

swipe_x = mouse_x;
swipe_y = mouse_y;
Quando o Mouse (touch) soltar(released)

Código: Selecionar todos

//Vc tem que ter um pouco de erro, ja que e praticamente impossível vc fazer um movimento perfeito com o dedo
//Então vamos por distancia 64 pixels, e de cima pra baixo a direção deve ser 270º, mas vamos por uma margem de erro de 20º
var dist = point_distance(swipe_x, swipe_y, mouse_x, mouse_y);
var dir = point_direction(swipe_x, swipe_y, mouse_x, mouse_y);
if (dist > 64) {
    if (dir > 270 - 20 && dir < 270 + 20) {
        //De cima para baixo
    } else if (dir > 90 - 20 && dir < 90 + 20) {
        //De baixo para cima
    } else if (dir > 360 - 20 && dir < 0 + 20) { // 0º e 360º olha um transferidor e vc vai entender
        //Da esquerda pra direita
    } else if (dir > 180 - 20 && dir < 180 + 20) {
        //Da direita para esquerda
    }
}

Responder

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes