0

私は、水平位置を介してオブジェクトを移動するための彼のコードを持っています。

#define kAccelerationSpeed 10
#define kAccelerometerFrequency 200


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


    CGPoint pt =  thePlayer.position ;
    CGFloat accel = acceleration.x * kAccelerationSpeed;
    pt = [[CCDirector sharedDirector] convertToGL:pt];


        pt = ccp (pt.x+accel>0 , yLocationOfPlayer+accel<768 );


}

初期化ステートメントで

-(id) init
{
    // always call "super" init
    // Apple recommends to re-assign "self" with the "super" return value
    if( (self=[super init])) {
 [[UIAccelerometer sharedAccelerometer] setUpdateInterval:(1.0 / kAccelerometerFrequency)];
        [[UIAccelerometer sharedAccelerometer] setDelegate:self];
    }

上記のコードの何が問題なのか、機能していません。画面を傾けると、「theplayer」オブジェクトが動きません。これを行うのを手伝ってください。

前もって感謝します。

4

2 に答える 2

0

プレイヤースプライトの位置を割り当てていません。これを試して:

NSLog(@"position before = %@", [NSValue valueWithCGPoint:thePlayer.position]);
thePlayer.position = ccp (pt.x+accel>0 , yLocationOfPlayer+accel<768 );     
NSLog(@"position after = %@", [NSValue valueWithCGPoint:thePlayer.position]);

ロギングは、1) デリゲート メソッドが起動されているかどうか、および 2) 位置が期待どおりかどうかを判断するのに役立ちます。

于 2012-10-29T18:32:28.383 に答える
0

デリゲートが加速度計情報を報告するように設定されていますか? 加速度計のコールバックで thePlayer.position も割り当てていますか? 理由は思い出せませんが、コールバック内で割り当てを試行したことを思い出します。結果はかなり途切れ途切れで問題がありました。私にとっての解決策は、加速度計のデリゲート呼び出しが変数を変更し、デリゲート コールバックの変数の更新に基づいてティック スクリプト内で thePlayer の位置を割り当てることでした。

于 2012-10-29T19:05:40.513 に答える