GameController adicionando um gamepad ao seu jogo
O GameController é o framework responsável por genrenciar a conexão com gamepads externos, que são conectados por bluetooth. Basicamente temos 4 tipos de controles:
- GCGamePad: Representa o conjunto padrão de controles oferecidos por um game pada, ou seja não trava eventos do joystick analógico
GCExtendedGamePad: Representa um conjunto maior de funções do controle, que basicamente, são as mesmas do GCGamePad, mas com o joystick.
- GCMicroGamePad: Representa os controles fornecidos pelo Siri Remote, que é o controle da Apple TV.
- GCMotion: Representa a orientação e movimento do controle
A comunicação com os controles acontecem por meio de notificação do NotificationCenter, abaixo um exemplo de como se inscrever na notificação do GameController
Agora precisamos declarar tratar os eventos dos botões, o controller não oferece um delegatepara tratar os eventos. A forma como os eventos são tratados é através de funções handlers. a documentação mostra como deve ser essa função.
Vamos entender o que siginifica cada parâmetro.
- GCControllerButtonInput → é o botão que sofreu a modificação
- Float → é o valor normalizado entre 0 e 1
- Bool → é o estado do botão
- true: para pressionado
- false: para não pressionado
Para tratar o evento podemos fazer de duas formas, que é criando um bloco de código ou escrevendo uma função, as duas abordagens são válidas, você escolhe a mais adequada para você, vamos ao código.
Elaborei o diagrama de conjuntos abaixo para que fique mais fácil de entender quais controles são suportados por cada controle.
Podemos ver que é muito simples se conectar com controles, isso foi somente o básico, mas é o bastante para você explorar mais sobre o funcionamento. Para ir mais a fundo, eu recomendo que você leia a documentação com calma, pois apesar de ser antiga, ajuda muito a entender as recomendações de uso da Apple. Isso evita que seu jogo não seja aceito por não está de acordo com as guidelines
https://developer.apple.com/library/archive/documentation/ServicesDiscovery/Conceptual/GameControllerPG/Introduction/Introduction.html#//apple_ref/doc/uid/TP40013276-CH1-SW1
Originally published at medium.com on February 27, 2019.