Configurando o controle do XBOX 360 na Unity

Nesta postagem eu mostro todo o processo de configuração da Unity para reconhecer os botões do controle do XBOX  360.

1º Passo

Crie ou abra um projeto na Unity em que você deseja utilizar o controle. Na barra de menus, escolha a opção:

Edit-> Project Settings -> Input

Clique para visualizar em tamanho real :)

Clique para visualizar em tamanho real 🙂

 

 

Isso abrirá o Input Manager na  janela à direita, chamada Inspector.

Inspector

2º Passo

Clique na seta “Axes” para mostrar todos os itens como mostrado na imagem acima. Em seguida, delete todos os itens circulados em vermelho pois não serão necessários.

 

3º Passo

O número mostrado na caixa “Size” agora deve ser 9 . Mude para 10.

Você perceberá que agora foi adicionado mais um item no final da lista com exatamente o mesmo nome que o ultimo elemento anterior. Clique na seta deste ultimo item para expandi-lo.

Voce poderá observar que existem diversas “caixas” contidas dentro de cada um desses itens. Dentre esses diversos valores, só nos interessa os seguintes campos no momento: Name, Positive Button, Sensitivity e Type.

A Unity reconhece os botões do Xbox da seguinte maneira: cada botão recebe um nome específico, e o mesmo é identificado apenas por esse nome. Por exemplo: o botão “A” do Xbox é reconhecido como “joystick button 0“.

Abaixo você pode ver uma lista com os nomes dos botões:

  • A   =   joystick button 0
  • B    =   joystick button 1
  • X    =   joystick button 2
  • Y    =   joystick button 3
  • LB   =   joystick button 4
  • RB    =   joystick button 5
  • Back    =   joystick joystick button 6
  • Start    =   joystick button 7
  • Analógico Esquerdo (quando apertado)    =   joystick button 8
  • Analógico Direito (quando apertado)    =   joystick button 9X360Controller2

4º Passo

Começaremos então configurando o botão “A” do controle.

No ultimo elemento, mude o campo Name para a letra A. Em seguida, mude o campo Positive Button para o nome correspondente ao botão A : joystick button 0

Detalhe importante: 

Existe uma diferença entre a sensibilidade de botões e eixos. Botões devem receber o valor 1000 no campo Sensitivity, e para eixos a sensibilidade deve ser apenas 1.

O motivo é que botões apenas indicam se o valor é 1 ou 0 (true or false) para verificar se estão sendo pressionados ou não. Eixos representam um intervalo de valores, que vão de -1(um negativo) até 1(um positivo), podendo então assumir diversos valores, como por exemplo 0.0001, -0.5, 0, etc.

 Portanto, coloque o valor de Sensitivity  como 1000. Em Type, selecione a opção “Key or Mouse Button

A_Button_compressed

Pronto! Terminamos de configurar o nosso primeiro botão. Se fosse equivalente ao “Quadrado” do PS3 você já teria todos os botões necessários para produzir um clone de God of War 🙂

O controle de Xbox 360 possui 10 botões no total (com exceção dos eixos dos dois analógicos,  os gatilhos RT e LT , e o DPAD que também são reconhecidos como eixos). Como nós terminamos um, agora temos que adicionar mais 9.

Portanto, vá em “Size”  e aumente o valor de 10 para 19.

Agora, repita o mesmo processo para todos os botões listados acima (do “A” até o “Analógico Direito” ).

Lembrando que você pode colocar o nome que quiser no campo “Name”, se você quiser escrever “Botão Verde”, “Right Analog Press” ou “Abobrinha”, sinta-se à vontade, porém recomendo utilizar nomes concisos e que descrevam bem o botão, até porque serão esses os nomes que você irá referenciar no seu código =)

Se tudo der certo voce terá um Input Manager como o da imagem abaixo:

Final_Button_compressed

Caso você esteja ansioso demais para continuar lendo este tutorial, e deseje imediatamente testar os seus magníficos botões, crie um script em C# com o nome Teste, e copie e cole o código disponível neste LINK

Arraste o script para algum objeto, como a Main Camera e clique em Play. Se quando você pressionar A aparecer uma mensagem no console, tudo deu certo. Pode respirar aliviado agora.

5º Passo

Agora configuraremos os eixos do controle.

  • Analógico Esquerdo Horizontal  =   X Axis
  • Analógico Esquerdo Vertical  =   Y Axis
  • LT   =   9th
  • RT   =   10th
  • Analógico Direito Horizontal   =   4th axis
  • Analógico Direito Vertical  =   5th axis
  • D-Pad Horizontal  =   6th Axis
  • D-Pad Vertical  =   7th Axis

Para os eixos será um pouco diferente. Modificaremos os campos Name, Type, Sensitivity e Axis, e deixaremos o campo Positive Button vazio.

Mude o campo “Size” para 20.

O ultimo elemento se repetirá.

  • Mude o Name para “Left Analog Horizontal
  • Positive Button delete qualquer valor que esteja lá
  • Sensitivity coloque o valor 1
  •  Type  como “Joystick Axis 
  • Axis como “X Axis“.

LeftAnalog-compressed

Mude o “Size” para 27 agora

Você deve estar se perguntando por quê “Horizontal” e “Vertical” neste momento. O motivo é que Horizontal se refere à “esquerda-direita” e Vertical “cima-baixo”. O intervalo de valores nesse caso varia de -1 até 1, sendo no caso do Horizontal -1(esquerda-valor máx) e 1(direita-valor máx).

Em outras palavras, se o valor detectado do eixo for negativo, eu estou empurrando o analógico para a esquerda, e se for positivo, para a direita.

O mesmo serve para o Vertical, se for negativo, estou empurrando para cima e caso seja positivo, para baixo.

Ok, agora modifique um dos itens duplicados para a seguinte configuração:

  • Name para Left Analog Vertical
  • Selecione a caixa Invert
  • Axis como Y Axis

LeftAnalogVertial-compressed

Este é o único eixo que é necessário deixar Invert selecionado para que funcione corretamente.

Tudo que você precisa fazer agora é mudar os nomes das duplicatas para os nomes da tabela que foi postada acima, e alterar o campo Axis para o seu respectivo valor.

Observação em relação ao DPAD

Anteriormente eu disse que eixos recebem o valor de Sensitivity 1.

Porém, o DPAD é uma exceção, pois ele se comporta de maneira mais semelhante à um botão, podendo assumir os valores -1, 0 e 1,  mas não um intervalo entre esses valores.

Portanto, quando criar o DPAD Horizontal e Vertical, altere a Sensitivity para 1000.

O seu Input Manager se parecerá com isto:

Axis

 

 

Finalizando

É isso, agora a Unity consegue reconhecer os botões do seu controle de XBOX 360.

Para pegar botões, use os métodos:

  • Input.GetButton (“nome do botao”);
  • Input.GetButtonDown (“nome do botao”);
  • Input.GetButtonUp (“nome do botao”);

Para eixos, o método:

  • Input.GetAxis (“nome do eixo”);

Espero que tenha conseguido  configurar o seu controle de XBOX com sucesso =)

Até a próxima.

Links úteis:

Código que testa os botões configurados neste tutorial

Wiki da Unity

Download Unity

 

 

Neste tutorial eu utilizei  a Unity 4.6.1 e um controle com fio de XBOX 360.

Comments Are Closed