0

cocos2d で 1 つのオブジェクトが実行されている 1 つのゲームを作成したいと考えています。

このオブジェクトをデバイス加速度計の左右のベースから移動したいと考えています。加速度計の値を取得して、オブジェクトの位置を更新しています。LOGで新しい場所を見ることさえできます。しかし、オブジェクトはその位置から移動していません。ここに私がアプリで書いたコードがあります。

- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration1 {

acceleration = acceleration1;
CGPoint position = mainPlayer.position;

if(acceleration.y < -0.25) {  // tilting the device to the right
    position.y -= 0.25;
} else if (acceleration.y > 0.25) {  // tilting the device to the left
    position.y += 0.25;
} else {

} //    newPosition = position;

CCAction *action = [CCMoveTo actionWithDuration:0.01 position:position];
[mainPlayer runAction:action]; 
//    mainPlayer.position = ccp(position.x, position.y);
}

位置を直接設定する方法とアクションを使用する方法の両方を試しました。

この問題が発生した理由、または加速度計が機能するための設定の必要性を知っている人は誰でも服用してください。

そのような親切な例のリンクを教えてください。

4

2 に答える 2

0

MoveTo の代わりに MoveBy を使用してみてください。

 - (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration1 {

    acceleration = acceleration1;
    CGPoint position = ccp(0,0);

    if(acceleration.y < -0.25) {  // tilting the device to the right
        position.y = 0.25;
    } else if (acceleration.y > 0.25) {  // tilting the device to the left
        position.y = 0.25;
    }

    CCAction *action = [CCMoveBy actionWithDuration:0.01 position:position];
    [mainPlayer runAction:action]; 
 }
于 2012-06-05T11:01:38.947 に答える
0

このメソッドは 1 秒間に 10 回呼び出されるため (cocos2d が加速度計を初期化する方法を覚えていません)、runActionメソッドが 1 秒間に 10 回呼び出され、おそらく前のアクションが停止するため、加速度計からアクションを実行しないことをお勧めしますそれが動いているのを見ない理由です。

メイン プレーヤーの作成方法とそれをシーン/レイヤーに追加する方法に関するコードをさらに表示します

于 2012-06-05T11:07:52.590 に答える