Criar (ou emular) um "D-Pad" em uma tela de toque; d-pad virtual

12

Com a proliferação de dispositivos baseados em toque, muitos sem um verdadeiro D-Pad, estou me perguntando se alguém tem algum recurso sobre como emular um D-Pad em uma tela sensível ao toque. Estou especificamente interessado em exemplos de código XNA e / ou Android.

Nate
fonte

Respostas:

5

Há uma amostra XNA de polegares sensíveis ao toque aqui

Eu reiteraria que é improvável que um dpad seja a interface certa para um dispositivo semelhante à tela de toque.

Algo como o épico que fez com o Infinity Blade para iPhone pode lhe dar inspiração Movie Link

Graeme Bradbury
fonte
Para futuros visitantes, o link acima agora está 404s. O exemplo agora pode ser encontrado aqui: xbox.create.msdn.com/en-US/sample/touchthumbsticks
Gabriel Isenberg
16

Posso desencorajá-lo a tentar emular um D-pad em um dispositivo touchscreen?

Os problemas com a emulação de um D-pad em uma tela de toque são:

  • o D-pad ocupa espaço na tela que você poderia estar usando para o jogo;
  • diferente de um D-pad real, um D-pad emulado quase não oferece feedback: como jogador, você não pode dizer em que direção está pressionando, nem pela sensação nem pela visão (já que seu dedo está encobrindo o D- teclado na tela). Assim, seu dedo desliza com muita facilidade o D-pad, ou para a parte errada, causando confusão e frustração.

Um dispositivo touchscreen é muito mais do que um dispositivo "sem um D-pad verdadeiro", como você diz. Um dispositivo com tela sensível ao toque permite que o jogador toque em qualquer lugar da tela e, assim, interaja com qualquer elemento visível do jogo . Isso oferece uma ampla gama de possibilidades de design de jogos, e é provável que esses designs sejam muito mais agradáveis ​​de usar do que um D-pad emulado.

Gareth Rees
fonte
1
Além disso, a implementação do Pathing para uma tela pequena como essa é trivial. Aumente o zoom e role o mapa do jogo e toque em Caminho!
Stephen Furlani
9

Sei que essa não é a resposta mais útil, mas, a menos que você esteja transferindo um projeto de outra plataforma, sugiro reconsiderar no D-Pad virtual. A maioria das implementações de D-Pads virtuais tem sido ruim na melhor das hipóteses, a falta de feedback tátil faz deles uma má escolha para a plataforma.

É muito melhor criar uma interface para o seu jogo que destaque os pontos fortes da plataforma em vez de aumentar a fraqueza da plataforma.

wkerslake
fonte
Aparentemente, Gareth respondeu da mesma maneira que eu estava digitando isso. Nada para ver aqui ... seguir em frente.
wkerslake
Fico feliz em ver que não estou sozinho nisso!
Gareth Rees
3

Como os outros disseram, é melhor criar um design que se adapte ao ambiente, não forçá-lo a se adequar ao seu design, mas se você preferir o D-Pad, veja como você pode fazê-lo:

Se você pensa no "ponto de contato" como um cursor do mouse, basicamente cria um "ponto de acesso" que reage ao movimento do cursor.

A melhor / mais simples maneira de fazer isso é criar uma caixa ou círculo semitransparente (lembre-se, você está cobrindo a tela do jogo) em um dos cantos inferiores, onde o jogador provavelmente já terá o dedo. Depois, basta rastrear a posição do dedo do jogador em relação ao centro do ponto ativo, e esse é o seu valor delta de entrada.

Sinenomen
fonte
É assim que a maioria dos jogos resolve o problema do controlador d-pad. É péssimo para plataformas de precisão.
Nailer
2

Vejo que muitas pessoas aqui acham que um D-Pad é uma péssima idéia e estão certas - na maioria das vezes. O Dungeon Hunter da Gameloft para Android é um ótimo exemplo de um ótimo D-Pad para telas sensíveis ao toque. É responsivo, tem uma direção de 360 ​​graus, não é "burro". O que quero dizer com isso não é "burro", é que quando você pressiona o D-Pad e desliza o dedo para fora da área do D-Pad, ele não interfere com o que acontece na tela - apenas se estende. Portanto, se você acidentalmente sair da área do D-Pad, não perderá o movimento.

Acho que a direção de 360 ​​graus e a capacidade de resposta fora dos limites são importantes e, se você puder fazer isso, terá a chance de fazer o D-Pad corretamente.

Espen
fonte
1

Se você deseja implementar um D-Pad, a maneira mais fácil que me ocorre é criar quatro retângulos (um para cada direção do D-Pad) e depois verificar se a localização do toque está dentro dos limites de qualquer um dos retângulos. .

Como os outros caras disseram; pense duas vezes antes de implementar um D-Pad em uma tela de toque. Por outro lado, vi pessoas jogando esses emuladores de GBA o dia inteiro em seus iPhones.

Depende de você ... você pode nos dizer o que planeja fazer que envolva um D-Pad simulado?

HDgam3r
fonte