cocos2dでキーボードを使う

cocos2dというとiOSのゲームエンジンというイメージが強いですが、Mac用のゲーム開発にも使う事ができます。iOSアプリではインプットにタップイベントや加速度センサーを使うのに対し、Macアプリではキーボードやマウスを使うのが一般的です。

キーボードイベントを受け取れるようにする

キーボードイベントは各レイヤー(CCLayer)毎に受け取る事ができますが、標準ではキーボードイベントは受け取らない設定になっています。

-(id) init
{
    if( (self=[super init])) {
        ...
        self.isKeyboardEnabled = YES;
    }
    return self;
}

レイヤーのイニシャライザの中などで、isKeyboardEnabledプロパティをYESにセットします。

キーダウン/キーアップの検知

CCKeyboardEventDelegateプロトコルには下記のデリゲートメソッドが定義されています。

-(BOOL) ccKeyUp:(NSEvent*)event;
-(BOOL) ccKeyDown:(NSEvent*)event;

レイヤーにこの二つのデリゲートメソッドを定義することでキーが押された/離されたことを検知することができます。

-(BOOL) ccKeyUp:(NSEvent*)event {
    NSLog(@"KeyUp %d", event.keyCode);
    return NO;
}
-(BOOL) ccKeyDown:(NSEvent*)event {
    NSLog(@"KeyDown: %d", event.keyCode);
    return NO;
}

どのキーが押されたかの判定には引数eventに含まれる情報を使用します。この二つのデリゲートメソッドはBOOL型の返り値を返します。YESを返すようにすると、そのキーボードイベントは他のレイヤーには通知されないようになります。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です