うぃ〜 / 2008/07/08 (Tue) / 編集 |
WiiRemote.frameworkを使ってプログラム作ろうとしたら、APIが全くわからないのでしかたないから調べてみた。
なんか「Cocoa勉強会でWiiRemote.frameworkの使い方習いました」と「RubyからWiiRemote.frameworkを使えるようにしました」はたくさん出てきた(あとはてなブックマークな)が、肝心の「WiiRemote.frameworkの使い方」が無いorz
頑張って探し続けてたらCocoa勉強会でWiiRemote.frameworkの使い方を説明した人のサイトをやっと発見
[Hirolog]WiiRemote.frameworkのサンプルコード
2007年05月13日の記事だがないよりはとってもいい!
というわけで最新版と交互に眺めつつしらべてみるよ
注:まだ未テストです
なんか「Cocoa勉強会でWiiRemote.frameworkの使い方習いました」と「RubyからWiiRemote.frameworkを使えるようにしました」はたくさん出てきた(あとはてなブックマークな)が、肝心の「WiiRemote.frameworkの使い方」が無いorz
頑張って探し続けてたらCocoa勉強会でWiiRemote.frameworkの使い方を説明した人のサイトをやっと発見
[Hirolog]WiiRemote.frameworkのサンプルコード
2007年05月13日の記事だがないよりはとってもいい!
というわけで最新版と交互に眺めつつしらべてみるよ
注:まだ未テストです
delegate系
つまり「状態が変更されたら呼ばれるよ」ってやつら、たとえば『Wiiのボタンが押されると「buttonChanged」という名前の関数の中身を実行するよ』とかそうゆうの三軸加速度センサが動いたときに呼び出される
[WiiRemote.h]
- (void) accelerationChanged:(WiiAccelerationSensorType)type accX:(unsigned char)accX accY:(unsigned char)accY accZ:(unsigned char)accZ wiiRemote:(WiiRemote*)wiiRemote;
こちらはdelegateなので、IRポイント
- (void) accelerationChanged:(WiiAccelerationSensorType)type accX:(unsigned char)accX accY:(unsigned char)accY accZ:(unsigned char)accZ wiiRemote:(WiiRemote*)wiiRemote{
//ここに処理を書く
}
という感じ、物理量をくれるわけではないので物理量は自分で計算する必要があるらしい。
そのために「accCalibData」を使うらしい
setXXX系
Wiiリモコンの方にデータを設定する関数、例えば「setForceFeedbackEnabled」を使うとリモコンが振動したり。LEDを点灯させる
[WiiRemote.h]
- (IOReturn)setLEDEnabled1:(BOOL)enabled1 enabled2:(BOOL)enabled2 enabled3:(BOOL)enabled3 enabled4:(BOOL)enabled4;
まぁあれだ、CocoaなのでBOOLはYES/NOで入れるのを忘れないようにしなければ、、
[wii setLEDEnabled1:(BOOL)YES enabled2:NO enabled3:NO enabled4:YES];
ちなみにwiiはWiiRemote型
振動させる
[WiiRemote.h]
- (IOReturn)setForceFeedbackEnabled:(BOOL)enabled;
いうまでもなく
[wii setForceFeedbackEnabled:YES];
その他
キャリブレーションしたりとか加速度センサのキャリブレーション
[WiiRemote.h]
- (WiiAccCalibData)accCalibData:(WiiAccelerationSensorType)type;
たとえばWiiリモコンの加速度センサのキャリブレーション情報を取得するには
accCalib = [wii accCalibData:WiiRemoteAccelerationSensor];
これでこんなんがWiiリモコンから送られてくるらしい
[WiiRemote.h]
typedef struct {
unsigned char accX_zero, accY_zero, accZ_zero, accX_1g, accY_1g, accZ_1g;
} WiiAccCalibData;
ここで、accX_zeroはX軸か速度が0Gになるときのセンサの値、accX_1gはX軸か速度が1Gになるときのセンサの値
これとaccelerationChangedの値を組み合わせると加速度がわかる、ということらしい
[WiiRemote.h]
- (WiiAccCalibData)accCalibData:(WiiAccelerationSensorType)type;
たとえばWiiリモコンの加速度センサのキャリブレーション情報を取得するには
accCalib = [wii accCalibData:WiiRemoteAccelerationSensor];
これでこんなんがWiiリモコンから送られてくるらしい
[WiiRemote.h]
typedef struct {
unsigned char accX_zero, accY_zero, accZ_zero, accX_1g, accY_1g, accZ_1g;
} WiiAccCalibData;
ここで、accX_zeroはX軸か速度が0Gになるときのセンサの値、accX_1gはX軸か速度が1Gになるときのセンサの値
これとaccelerationChangedの値を組み合わせると加速度がわかる、ということらしい
PR
トラックバック
URL :
コメント