Cursos / Jogos Digitais / Desenvolvimento com Motores de Jogos I / Aula

arrow_back Aula 03 - Movimentação - Scripts e Conceitos

Utilizando o Input no Unity

Utilização de Inputs Tradicionais no Unity

Quando queremos disparar um evento baseado apenas no fato de uma tecla ter sido pressionada ou não, não precisamosnos preocupar com eixos, ou com valores +1, 0 e -1. Basta que nós detectemos que essa tecla foi pressionada e aí então podemos agir de acordo, iniciando a ação que gostaríamos de iniciar! Nesse caso podemos configurar um eixo como visto anteriormente, porém, apenas com teclas para as modificações positivas, com uma gravidade e uma sensitivity muito alta e nada de deadzone. Com isso, transformamos o nosso eixo em apenas um click! E aí sim conseguimos trabalhar as vantagens de tornar as teclas configuráveis. Entende?! Vejamos um exemplo da diferença de configurar um eixo mesmo quando não se é necessário:

  • Na primeira opção, criamos um novo eixo, chamamos ele de Jump e dizemos que quando a tecla positiva do Jump for apertada, que configuramos para barra de espaço, o personagem irá disparar um evento de pulo.
  • Na segunda opção, não criamos qualquer eixo e vamos direto para o código. Nesse caso, dizemos diretamente Input.GetKey ("space") e isso faz com que seja disparado o nosso evento de pulo.

Os dois casos podem parecer funcionar da mesma maneira, correto? Mas... eSeOEspaçoDoMeuTecladoQuebrar?NãoConseguireiMaisJogarOSeuJogo,Né?:( Pois é! Essa é a principal importância de se utilizar os eixos. Caso tivesse utilizado a primeira opção, poderia simplesmente reconfigurar o menu de entrada para que o pulo fosse no "leftctrl" e aí conseguiria prosseguir sem problemas, até conseguir um teclado novo! Então, vamos tentar, sempre que possível, trabalhar com eixos, ok?!

Só devemos ressaltar que há uma diferença importante! Quando formos trabalhar com movimentações e eventos que o eixo realmente importa, vamos utilizar a função Input.GetAxis("EIXO"). Já quando formos utilizar um eixo apenas pelas facilidades que ele nos traz, representando um botão qualquer, utilizaremos a função Input.GetButtonDown("EIXO"). Estamos combinados?! :)

Pause! Ufa! Quanta informação! Vamos tomar um copo de água e dar uma relembrada em tudo que passamos até agora para que possamos seguir para a nossa próxima parte e ver os últimos detalhes antes de retomar o nosso projeto do jogo!

Conceitos importantes:

  • Input deve ser preciso e instantâneo, tendo como uma boa referência a taxa de frames. Capturar a cada frame o valor e utilizar esse valor como verdadeiro pelo resto da iteração.
  • O Unity trabalha com o conceito de eixos para facilitar a configuração e a programação para recebimento de Inputs, nomeando teclas para mascarar quais realmente são.
  • Devemos utilizar eixos sempre que possível, com valores positivos e negativos para movimentação, e somente positivos para triggers.

    Ex: Eixo Horizontal: -1 no A e +1 no D
    Eixo de Pulo: +1 no Espaço

  • Para capturar o eixo de movimentação com seus dois valores, utilizamos Input.GetAxis("EIXO").
  • Para capturar o eixo de eventos, com apenas o seu valor de pressionado ou não, utilizamos o Input.GetButtonDown("EIXO") em nosso script.

Versão 5.3 - Todos os Direitos reservados