Como posso fazer um movimento de coordenadas polares amigável ao redor de um círculo?

23

Estou trabalhando em um jogo 2D em que você pousa em planetas com um navio e pode sair do navio e andar por aí.

Esses planetas são muito pequenos (pense em um raio de ~ 350 pixels às vezes) e são vistos de lado. Então você pode ver facilmente o planeta inteiro na tela em geral.

Isso pode ser meio confuso, então aqui está uma foto: jogo espacial

Estou usando as teclas A e D para mover no sentido anti-horário e horário, respectivamente. O problema é que, se você está no "topo" do planeta (metade superior), isso faz sentido: A se move para a esquerda, D se move para a direita. No entanto, se você estiver no "fundo" do planeta (metade inferior), A se move para a direita e D se move para a esquerda.

Alguma idéia de como posso tornar isso mais fácil de usar?

MCMastery
fonte
21
Você perguntou aos usuários se eles acham isso confuso? Eu, pelo menos certamente não - você pressiona a direita para mover seu personagem para a direita e para a esquerda para mover seu personagem para a esquerda da perspectiva do personagem . Isso é muito melhor do que, digamos, mudar os botões no meio de um turno (se você estava planejando fazer isso).
Charanor

Respostas:

38

Minha primeira sugestão seria ficar com o movimento A= no sentido anti-horário e D= no sentido horário. Não é muito confuso e é praticamente a escolha "padrão" (isto é, mais comum) quando se trata de movimento orbital como esse.

Outra maneira seria mudar a maneira como o jogo se move. Em vez de mover o jogador quando ele estiver em um planeta, você poderá girá-lo. Essa também é uma escolha muito comum, mas pode ser desorientadora se você tiver vários planetas na tela, pois tudo, exceto o jogador, terá que girar. Se você decidir usar esse método, poderá ajudar a exibir apenas uma parte do planeta para reduzir a quantidade de objetos em movimento que seu olho precisa acompanhar:

apenas a metade superior do planeta

Se você estiver livre para usar o mouse, sempre poderá usar os cliques do mouse para se movimentar. Ao clicar em um local, o jogador se moverá para esse ponto e escolherá automaticamente a direção mais curta. Círculos são "cliques" e setas são a direção mais curta.

direção mais curta para o clique

Como um bônus adicional, também é muito fácil traduzir para controles do Mobile, se você deseja publicar seu jogo como um aplicativo.

Charanor
fonte
3
Se seguir o movimento da câmera, sugiro que fique um pouco atrás, se você quiser enfatizar a direção e a velocidade que está indo. seu personagem pareceria inclinado 5 ou 10 graus na direção em que você está se movendo.
satibel 27/01
16

Quando o personagem sair da nave, reoriente a vista para que ele fique no topo do planeta e depois mova a vista com o personagem enquanto eles andam. Dessa forma, o personagem está sempre no topo em relação à vista quando está em um planeta, para que os controles esquerdo / direito possam permanecer consistentes, não importa onde você pousar.

ricksmt
fonte
3
Isso pode se tornar muito desorientador se você não for cuidadoso.
Beefster
11

Uma abordagem (geralmente usada em jogos de terceira pessoa com movimento baseado em stick que também possui câmeras não estáticas) é estabelecer o quadro de referência para o movimento toda vez que a entrada começa (no seu caso, quando a tecla é pressionada) e manter esse quadro de movimento até a entrada terminar (a tecla é liberada). Isso significa que a tecla "A" sempre moveria o caractere "para a esquerda", seja o que for - no sentido horário, se estiver na parte inferior do círculo, no sentido anti-horário, até que a tecla seja liberada.

Infelizmente, como você está restrito a um círculo, essa técnica ainda se desfaz quando o personagem está na extensão extrema esquerda ou direita do círculo. Você pode fazê-lo funcionar simplesmente escolhendo arbitrariamente em qual direção seguir, mas o usuário pode achar confuso. Possivelmente mais confuso do que simplesmente seguir a abordagem existente "A é sempre no sentido anti-horário" que você tem agora.

Josh
fonte
6
Quando à direita do círculo, S deve se mover no sentido horário.
usar o seguinte comando
1
Não pensei nisso porque o OP mencionou apenas duas chaves, mas é uma boa ideia.
Josh Josh
1
Também é importante considerar os controles analógicos, onde esse modelo de controle é o melhor.
Beefster
10

Eu sugiro que você dê uma olhada em um conceito semelhante, mas depois em 3d: Super mario galaxy.

super mario galaxy imagem de tela https://youtu.be/_8eJC4gIAm4?t=19m

Em movimentos curtos, o quadro de referência permanece o mesmo, o universo não se move, ultrapassa um certo limite, o universo se move / se move ao longo do movimento, de modo que o quadro de referência está de volta ao meio.

Você pode "borrar o movimento" do universo ao se mover, para que pareça mais natural e os olhos não se concentrem nas posições de mudança das partes móveis.

Presumo que a Nintendo tenha investido bastante em pesquisas para deixar o jogo o mais tranqüilo possível, e foi nisso que eles decidiram. Eu sempre gosto de ver o que as grandes empresas descobriram, esperando que investissem algo em P&D para obter o máximo de conforto e jogabilidade.

Tschallacka
fonte
7

Use A/ Dpara mover o personagem na direção em direção ao ponto mais à esquerda / direita do planeta, respectivamente, e W/ Spara mover o personagem em direção aos pontos mais altos / mais baixos.

Dessa forma, o jogador está sempre movendo o personagem na mesma direção que o movimento de entrada - por exemplo, Dsempre se move para a direita, Ssempre se move para baixo, independentemente da posição do personagem.

O jogo pode continuar na mesma direção do relógio enquanto a tecla é pressionada ou parar o personagem no ponto limite. Se parar, não parece ser um grande problema - o jogador possui um quadrante completo para alterar sua entrada se quiser continuar na mesma direção do relógio.

Além disso, a circular W- A- S- Dou W- D- S- Apadrão de resultados de entrada na circunavegação do planeta, o que parece bastante intuitivo.

Manter pressionada mais de uma tecla pode fazer com que a tecla pressionada mais recentemente tenha precedência ou você pode usar um comportamento mais complexo, como ter oito pontos limite.

AlliedEnvy
fonte
1
Isto é o que eu ia sugerir depois de jogar Super Mario Odyssey . No entanto, devido à mudança nos esquemas de controle, foi bastante pouco intuitivo a princípio. Se é o seu esquema de controle principal, talvez isso não será um problema
Kaiged
3

Este é um dos dois problemas clássicos do "modelo mental" sofridos por muitos jogos.

Todo jogador desenvolve um "modelo mental" de como os controles do jogo são mapeados para as ações do jogo. À medida que os jogos se tornam cada vez mais semelhantes em seus controles ao longo do tempo, as pessoas começam a esperar que seu modelo mental estabelecido se aplique a novos jogos, em vez de desenvolver modelos separados para jogos separados. O que seria bom, exceto que nem todos os jogadores têm o mesmo modelo mental de como os controles devem funcionar.

Por exemplo, o outro problema clássico do "modelo mental" é se pressionar um joystick (normalmente o manípulo analógico correto de um gamepad) deve significar olhar para cima ou se deve inclinar para frente (ou seja, olhar para baixo ). Nenhum dos modelos é objetivamente correto , mas a maioria dos jogadores mantém apenas um desses dois mapeamentos possíveis em sua cabeça e será descartada se um jogo fizer algo diferente do que eles pessoalmente esperavam.

Sua pergunta é exatamente o mesmo dilema; a questão do "modelo mental" aqui é se pressionar à direita no controle significa "mover para a direita do personagem" (como em Resident Evil) ou "mover para o lado direito da tela" (como em Mario). Ou, nesse caso, "mova no sentido horário" (como no Tempest, ao usar uma conversão tradicional dos controles de remo para joystick).

Todo jogador terá um modelo interno ao qual está acostumado a relutar em mudar (ou ter dificuldade em mudar). Em qualquer problema desse "modelo mental", você tem três opções para lidar com o problema:

  1. Como desenvolvedor, você escolhe qual modelo é o melhor para o seu jogo e o usa. Ignore as reclamações de pessoas que têm problemas com o modelo escolhido; eles apenas terão que se adaptar. E se o seu jogo for atraente o suficiente, eles serão.
  2. Implemente os dois modelos possíveis e permita que os jogadores escolham qual deles deseja usar.
  3. Redesenhe o jogo para garantir que o mapeamento das ações de controles-> do jogo permaneça o mesmo, independentemente do modelo mental que alguém esteja usando.

A opção 3 ("redesenhar o jogo para que os modelos mentais não entrem em conflito") nesse caso significaria girar a câmera com o jogador, para que o jogador sempre aparecesse na vertical. Dessa forma, "direito significa ir no sentido horário" e "direito significa ir para o lado direito da tela" estão sempre alinhados; não há mais conflito e os jogadores não ficarão confusos, dependendo do modelo mental de como os controles devem funcionar.

A opção 2 significaria implementar os dois estilos de controle; aquele em que pressionar direito leva você para o lado direito da tela, aquele em que pressionar direito leva você no sentido horário e possui uma tela de opções onde o jogador pode escolher qual estilo de controle deseja usar.

Qualquer escolha aqui é válida; as diferentes opções exigem apenas diferentes quantidades de trabalho e impõem restrições diferentes ao seu jogo. Se é realmente importante para você que o jogador esteja visível se movendo no lado "inferior" do planeta, por motivos temáticos ou artísticos, não será necessário usar a opção 3 e usar 1 ou 2. Se não, então a opção 3 é provavelmente a escolha ideal.

Uma pequena nota de implementação para o estilo de controle "empurrar o joystick para a direita significa mover-se para o lado direito da tela": Ao implementar esse estilo de controle, faça-o mapeando a direção do joystick para uma opção no sentido horário / anti-horário e, em seguida, mantenha a mesma decisão no sentido horário / anti-horário até o joystick se mover novamente, mesmo quando o jogador se mover para o lado inferior do planeta. Ou seja, pressionar a direita enquanto estiver no topo de um planeta ou para baixo enquanto estiver do lado direito de um planeta iniciaria o personagem se movendo no sentido horário, e o personagem continuará se movendo no sentido horário mesmo ao redor do fundo do planeta até que o jogador se mova o joystick novamente, mesmo que eles se movam para uma parte do planeta onde a direção do joystick seria agora interpretada como sendo uma direção diferente.

Essa técnica costuma ser chamada de "travamento" do controle do joystick e geralmente é usada em jogos 3D quando a câmera faz uma rotação repentina (que você não quer que o jogador mude de direção repentinamente), mas também pode ser útil aqui em um jogo 2D, se um movimento da câmera fizer com que as entradas não modificadas do jogador subitamente signifiquem algo diferente do que antes.

Trevor Powell
fonte
1
Deslizar para baixo no touch pad do meu laptop com dois dedos uma rolagem para cima ou rolagem para baixo? Se eu estivesse em um dispositivo móvel, ele estaria ativo (porque meus dedos e a página estão "conectados"), mas a mesma direção em um mouse estaria inativa ... Sinto essa desconexão toda vez que uso um Mac ...
Draco18s
@ Draco18s Esse é outro ótimo exemplo! O Windows considera que uma entrada de rolagem para baixo significa olhar mais para baixo no documento , enquanto a Apple considera que uma entrada de rolagem para baixo significa mover o próprio documento para baixo (o que significa que vemos mais na parte superior do documento). Mas em sistemas operacionais de desktop, a Apple sabia que muitas pessoas tinham o outro modelo mental de como as entradas de rolagem funcionam, e por isso implementaram as duas coisas e deixaram cada usuário escolher qual delas preferia. .
Trevor Powell
Sim, você pode mudar, eu conheço tantas pessoas que o configuraram por padrão ("mova o documento para baixo"). Caramba, o laptop do Windows que recebi para trabalhar há um mês tinha isso como padrão. Desliguei-o rapidamente (ativei o recurso "rolagem pela borda", mas acho que o desligarei novamente porque é muito lento: sério, a altura total da área de rolagem rola .... cinco linhas. ...)
Draco18s
2

Use W / S / A / D para entrada (ou para cima / baixo / esquerda / direita). Trate a entrada como uma direção de 8 direções (incluindo diagonais).

Em seguida, mova o reprodutor na direção válida (sentido horário ou anti-horário) mais próxima da direção pressionada.

user253751
fonte
Eu acho que essa solução se encaixaria melhor com um joystick do que com um teclado, mas ainda é uma solução possível, no entanto, eu a teria como opção, porque ter que mover os dedos em um círculo no wasd pode ser bastante difícil se você estiver jogando mais de uma hora.
satibel 27/01
2

Uma opção é, em vez de definir a associação entre chave e direção do movimento, ter:

  • uma tecla para avançar "(na direção de seleção atual)
  • uma tecla para "virar" (direção do interruptor)

Isso requer que o personagem tenha uma "direção" claramente visível.

Não tenho certeza de que realmente faz muito mais sentido do que outras opções aqui, mas por precaução ...

jcaron
fonte
1

Abaixo é onde está a gravidade. Portanto, quando o personagem do jogador estiver em um planeta, gire a câmera juntamente com o movimento do personagem do jogador para que ele esteja sempre no topo do planeta.

Mas, embora isso facilite a navegação no planeta, pode desorientar o jogador em relação a outros objetos celestes. É uma troca que você precisa decidir por si mesmo.

Philipp
fonte
1

Se você optar por usar o movimento no sentido horário / anti-horário, há várias coisas que você pode fazer para facilitar a intuição do sistema para seus jogadores.

Dê ao personagem orientações distintas e destacáveis

Se o personagem é meio azul e meio vermelho, a orientação se torna fácil para os jogadores lembrarem. Em vez de ter que identificar "no sentido horário" ou "no sentido anti-horário", os jogadores se movem na direção azul ou vermelha. Se o personagem está sempre voltado para uma direção (de preferência no sentido horário, para que o movimento seja mais intuitivo enquanto na vertical), é ainda melhor, porque os falantes de inglês (e qualquer outra pessoa com um idioma da esquerda para a direita) tendem a associar 'certo' a 'forward', reforçando a conexão entre os controles e a direção do movimento.

Nunca deixe os personagens pararem de se mover

Desde que você esteja movendo seu personagem, é fácil manter em que orientação seus controles estão. Afinal, continuar movendo-se na direção em que você está se movendo não toma nenhuma ação e quando você deseja reverter seu movimento , há apenas uma outra chave para escolher. É somente quando você começa a se mover novamente depois de ter parado que você se depara com uma escolha. Quanto mais você parar, mais difícil será recuperar novamente com base no que você estava fazendo antes. Ao reduzir a frequência e o comprimento das pausas, você pode impedir que os jogadores esqueçam como se mover.

Lúpus Arcanista
fonte
0

Existem várias abordagens para isso.

1) Como eu abordaria isso levaria seções do planeta: os lados superior, esquerdo, direito e inferior (mais se desejado). E faça isso depois que o usuário pressionar uma direção, o personagem continuará nessa direção até soltar o botão. Portanto, se o personagem estivesse do lado esquerdo e o usuário pressionasse, ele continuaria no sentido horário até o lançamento. Dessa forma, você não precisa se preocupar com mudanças no quadro de referência enquanto o personagem está em movimento, somente depois.

2) Outra maneira de como os "amantes do espaço-tempo perigoso" o abordam. Com um joystick, em vez de ter o quadro de referência dependendo da superfície, ele possui o ângulo que o joystick era o local desejado para o "personagem" parar. Portanto, seu quadro de referência estava no centro de seu "planeta". Digo caráter e planeta, mas eles tinham partes modulares da nave do lado de fora, onde você determina para onde elas vão, ou seja, em qual direção os propulsores são apontados para mover a nave.

3) Como você o projetou agora. Também pode ser um pouco complicado, mas nada que os jogadores não tenham visto antes. Você pode editá-lo para que pareça que o planeta está girando, para que a peça esteja sempre "no topo".

Code Eyez
fonte