GameController.framework
その1で触れた端のタッチ取得、正解はGameController.frameworkを使用するでした!
import GameController
...
private func observeGCController(force: Bool) {
if let gc = GCController.controllers().first?.microGamepad {
gc.reportsAbsoluteDpadValues = true
gc.dpad.valueChangedHandler = { [weak self] (dpad, _, _) in
// dpad.xAxis.value / dpad.yAxis.value で座標を取得できる
}
} else {
if force {
return
}
NotificationCenter.default.addObserver(forName: Notification.Name.GCControllerDidConnect, object: nil, queue: nil, using: { [weak self] _ in
self?.observeGCController(force: true)
})
}
}
dpad.xAxis.value
もしくは dpad.yAxis.value
は -1.0から1.0の範囲なので、この値の絶対値が例えば0.8以上なら端っこに指があるということになります。
Game CenterのCapability
なお上の実装でApp Storeに申請するにはGame CenterのCapabilityをONにする必要がありますのでご注意ください。ONにしないとたしかバイナリのアップロードのタイミングでエラーになったと思います。
別にゲームではないアプリでも、問題なく申請は通りました👌