2016-02-29 24 views
7

Sto lavorando a un gioco in Objective-C. Il telecomando Siri funziona alla grande con GCMicroGamepad e i veri controller MFi funzionano bene tramite GCGamepad. Tuttavia, i telecomandi IR di terze parti non funzionano affatto all'interno del gioco (e nemmeno l'app remota su iPhone o un vecchio telecomando Apple TV di terza generazione).tvOS - controllo del gioco tramite telecomando non Siri

Come riconoscere e distinguere questi ingressi?


Due giorni più tardi ... Ho trovato che un UITapGestureRecognizer può essere utilizzato per rilevare Su, Giù, Sinistra, destra e selezionare gli eventi correttamente quando presentati con un televisore a distanza di terze parti o iPhone Remote.app. Gli eventi direzionali sono in realtà unici anche per questi tipi di telecomandi: il telecomando Siri non genera eventi di tocco direzionale. Sfortunatamente, tuttavia, toccando il pulsante Seleziona sul telecomando Siri o su Remote.app di terze parti o iPhone verrà generato un evento Seleziona dal mio riconoscitore tocco. Ho bisogno di un modo per distinguere i due.

L'unico fattore di distinzione che posso trovare è che toccando il Siri remota anche genera un pulsante-A premere sul telecomando GCMicroGamepad-a terze parti o iPhone Remote.app non influisce sulla GCMicroGamepad a tutti. Ma è estremamente inelegante tentare di guardare GCMicroGamepad per gli eventi di tipo tap-release, e poi usare quell'evento per filtrare un evento di selezione del pulsante Select. Certamente non è un uso consigliato delle API; non sembra una buona soluzione a lungo termine. Se potessi dire al telecomando Siri di interrompere la generazione di eventi dell'interfaccia utente in modalità GCMicroGamepad, sarebbe eccellente.

+0

Avete controllato i video di tecnologia: https://developer.apple.com/videos/play/techtalks-apple-tv/4/ – Stefan

+0

Parliamo di questo argomento? Non me lo ricordo. – StilesCrisis

+0

No, solo telecomando Siri e controller di gioco. Mi dispiace, ho perso quella parte nella tua domanda. – Stefan

risposta

0

Non riesco a testare questo al momento, ma probabilmente potresti differenziare il telecomando Siri da un remoto di terze parti utilizzando un GCEventViewController con la proprietà controllerUserInteractionEnabled impostata su false. In questo modo, gli input Siri Remote non devono essere passati a UIKit (quando GCEventViewController è il primo responder). Gli eventi di input del telecomando di terze parti potrebbero passare a UIKit poiché, a differenza del telecomando Siri, non è un GCMicroGamepad.

Finora Apple non supporta i giochi multiplayer con più telecomandi Siri, telecomandi iOS o telecomandi IR. Ma penso che potrebbe arrivare perché the Remote app on iOS will soon support multiplayer gaming (quindi suppongo che Apple TV riconoscerà più controller GCMicroGamePad).