2015-09-01 3 views
0

Я хочу, чтобы моя игра 2D-платформы, которую я разрабатываю, реагировала на кнопки, нажатые на контроллеры MFi. Я несколько часов зависал по одной проблеме. Я делаю по существу то, что инструктирует Apple Developer Guide для платформы GameController, но код в руководстве находится в Objective-C, а не в Swift (давайте, Apple). Я не могу понять, что я делаю неправильно, и у меня такое чувство, что ответ будет таким простым, но я не могу этого понять. Мое единственное объяснение - ошибка в Xcode 7 Beta. В любом случае, вот мой код:GCController Swift 2 Как обнаружить кнопку нажмите

if GCController.controllers().count >= 1 { 
if GCController().gamepad!.buttonA.pressed { 
jump() 

}

}

Когда я запустить приложение на моем iPhone он работает хорошо, но когда я отключаю свой iPhone от моего Mac и попытаться использовать его с мой Logitech PowerShell, он падает на сцену.

Кстати, на самом деле это не так, как я отформатирую свой код. У меня не будет Wi-Fi-кондиционирования еще несколько недель, и мой оператор не поддерживает iPhone, действующий как персональная точка доступа, поэтому я должен использовать свой iPhone для публикации, поэтому выглядит странно.

ответ

0

Профиль gamepad является свойством отдельного контроллера, а не массива контроллера. Вам нужно сделать что-то вроде:

if let controller = GCController.controllers().first { 
    if controller.gamepad!.buttonA.pressed { 
     jump() 
    } 
} 

В качестве альтернативы, вы можете установить pressedChangedHandler и позвонить jump() оттуда. Вам нужно будет сделать это в уведомлении controllerDidConnect, чтобы у вас была ссылка на контроллер:

@objc class func controllerDidConnect(notification: NSNotification) { 

    let controller = notification.object as! GCController 

    controller.gamepad?.buttonA.pressedChangedHandler = { (element: GCControllerElement, value: Float, pressed: Bool) in 

     if pressed { 
      jump() 
     }  
    } 
} 
Смежные вопросы