Skip to content

MatheusMBispo/GameControllerExample

Repository files navigation

Game Controller

  1. O que é?
  2. Quais os controles suportados?
  3. Tutorial Rápido
  4. Exemplo
  5. Fontes

Repositório desenvolvido por:

  • Afonso Lucas
  • Eduardo Torres
  • Felipe Rodrigues
  • Gabriel Messias
  • João Vitor
  • Matheus Bispo

Tutoria de Marcos Morais, desenvolvido na Apple Developer Academy UCB.

O que é?

É uma framework, desenvolvida pela Apple, cujo o objetivo é facilitar a implatação de controles (Joystick, Gamepad, etc) em aplicações(incluindo Games) feitos em swift ou objective-c.

Controles Suportados

  • MicroGamepad:

  • Gamepad:

  • ExtendedGamepad:

Tutorial Rápido

⚠️ Importante!

Para o funcionamento da framework não se esqueça de importar:

import GameController

Procure os Controles

        GCController.startWirelessControllerDiscovery { COMPLETION }

Configure os observers

É importante saber se os controles estão conectados no device, para conseguir essa informação em tempo de execução precisamos configurar observers.

        SUA_VARIAVEL_OBSERVER = NotificationCenter.default.addObserver(forName: NSNotification.Name.GCControllerDidConnect, object: nil, queue: .main) { (notification) in
            if GCController.controllers().count > 0 {
                CODIGO DE CONFIGURAÇÃO DO CONTROLE
            }
        }
        
        OUTRA_VARIAVEL_OBSERVER = NotificationCenter.default.addObserver(forName: NSNotification.Name.GCControllerDidDisconnect, object: nil, queue: .main) { (notification) in
            CODIGO DE SEGURANÇA CASO PERCA A CONEXÃO COM O CONTROLE
        }

Pegue os controles conectados

var controles = GCController.controllers()

Verificando tipo do controle

if let extendedGamepad = connectedController.extendedGamepad {..}
if let gamepad = connectedController.gamepad {..}
if let microGamepad = connectedController.microGamepad {..}

Configurando os Inputs

Para cada botão do controle é preciso configurar uma ação, para isso usamos um handler.

      gamepad.buttonA.pressedChangedHandler = {(button, value, pressed) in
          AÇÃO DO BOTÃO
      }

⚠️ IMPORTANTE: Os botões estão classificados de acordo com o tipo de controle, como mostrado nas imagens da seção de controles suportados.

Não se esqueça de retirar os observers

É importante sempre remover os observers no fim de uma aplicação.

        NotificationCenter.default.removeObserver(SUA_VARIAVEL_OBSERVER)
        NotificationCenter.default.removeObserver(OUTRA_VARIAVEL_OBSERVER)

Exemplo

Segue no repositório um exemplo de implatação de controles micro, standart e extended Gamepad, tanto no iOS quanto no tvOS.

Fontes

  1. Apple Game Controller Framework Reference — @ Apple Doc
  2. Sobre Game Controllers — @ Apple Doc
  3. Usando o GameController na AppleTV
  4. Controlling Game Input For AppleTV, WWDC 2016
  5. How to Support External Game Controllers with Swift 2 and Sprite Kit for the New Apple TV
  6. Designing for Game Controllers WWDC 2014
  7. iOS 7 Game Controller Tutorial, em Objective-C, Rey
  8. Integrating with Game Controllers, WWDC 2013
  9. GCMotion

About

Exemplo da framework GameController da Apple

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages