Download - MFi Controller〜それは忘れられたiOS7新機能〜
ワンダープラネット株式会社 取締役 CTO 村田 知常
MFi Controller ~それは忘れられたiOS7新機能~
第1回 岐阜iPhoneアプリ開発勉強会 2014.5.24
自己紹介
村田 知常(むらた ともつね)
ワンダープラネット株式会社 取締役 CTO
名古屋iPhone開発者勉強会では運営(っぽい?)人(〃▽〃)
https://www.facebook.com/tomotsune.murata
本日は懇親会の会場まで誘導します!
ソフトピアではおなじみの龍香苑
ベテランさんも誘導手伝って!!
事業内容タブレット・スマートフォン向けアプリーション・ゲームの企画・開発・運営・販売
設立 2012年9月3日(10月1日創業)
ホームページ http://wonderpla.net
Facebookページ https://www.facebook.com/wonderplanet.nagoya
ワンダープラネット株式会社
くるるファンタズマ
プロダクト
■iPhone/iPad/Android
スラッシュオブドラグーン
■iPhone/iPad/Android
Panic Farm
■iPhone/iPad/Android
昨年2013のWWDC キーノートでの1シーン
iOS7 SDKで追加された機能
MFi game controllers(・_・?)
MFi (・_・??
Wi-Fiの仲間?
Made for iPod/iPhone/iPadMade for iPod/iPhone/iPad
↓
MFi
MFi game controllersって…売っているの?
ところで…
発売開始時は9,980円でした
対応ゲームってあるの?
でも…
最近、続々とリリース!!
最近対応ゲームが増えてきて熱くなってきた!
触るしかない!!
2つのProfile
Standard Gamepad Profile
D-pad ABXY
Shoulder
Extended Gamepad Profile
Thumbsticks
Triggers
実装に必要なのは…
GameController.frameworkを追加するのみ!!
#import <GameController/GameController.h>
必要なところで#importしよう!
接続されたかどうかの通知
NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
// 接続されたときの通知を登録 [ center addObserver:self selector:@selector(setupControllers:) name:GCControllerDidConnectNotification object:nil];
// 切断されたときの通知を登録 [ center addObserver:self selector:@selector(setupControllers:) name:GCControllerDidDisconnectNotification object:nil];
delegateの実装は不要
-application:didFinishLaunchingWithOptions: での登録がApple推奨
Wirelessの場合は違う方法だよ
Main Entry Point
現在接続されているControllerがリストで取得
リストの中身は、GCController
@interface GCController : NSObject + (NSArray *)controllers ...
使用例
- (void)setupControllers:(NSNotification *)notification { // Controllersを取得 self.controllerArray = [GCController controllers]; if ([self.controllerArray count] > 0) { // 接続されたControllersがある場合 } else { // 接続されたControllerが無い場合 } }
ボタンなどからの入力値
self.myController.gamepadControl Property Name Type
Face buttons
buttonA
Button InputbuttonBbuttonXbuttonY
Shoulder Buttons
leftShoulderButton Input
rightShoulderD-pad dpad DirectionPad
self.myController.extendedGamepadControl Property Name Type
Face buttons
buttonA
Button InputbuttonBbuttonXbuttonY
Shoulder Buttons
leftShoulderButton Input
rightShoulderD-pad dpad DirectionPad
ThumbsticksleftThumbstick
DirectionPadrightThumbstick
TriggersleftTrigger
Button InputrightTrigger
Button Input
ボタンが押されたかどうかBOOL pressed;
ボタンがどのくらい押し込まれているかfloat value;値の範囲は 0.0 ~ 1.0
Direction Pad
上下左右のボタンに対してGCControllerButtonInput *up, *down, *left, *right;
ボタンが押されたかどうかBOOL pressed;
ボタンがどこくらい押し込まれているかfloat value; // 値の範囲は 0.0 ~ 1.0
2軸の方向に対して GCControllerAxisInput *xAxis, *yAxis;
ボタンがどこくらい押し込まれているかfloat value; // 値の範囲は -1.0 ~ 1.0
GCControllerAxisInput
使用例
// Face buttons self.myController.gamepad.buttonY.pressed; self.myController.gamepad.buttonY.value;
// Thumbsticks self.myController.extendedGamepad.leftThumbstick.yAxis.value; self.myController.extendedGamepad.leftThumbstick.up.value; self.myController.extendedGamepad.leftThumbstick.up.pressed;
どこで使うの?
Sprite Kitを使っている場合- (void)update:(CFTimeInterval)currentTime
Demo
まとめ
MFi game controllerは、まだまだ少ない
でもこれから発売予定あり!!
シミュレーターで確認できないのが難点
特にG550は接続が面倒
Wireless接続ものに期待!
ご清聴ありがとうございました
d