0

画面にタッチすると体を動かし続け、タッチを離すと停止します。私は box2d と cocos2d を使用していますが、コードがうまく機能しない理由が本当にわかりません。私は、スプライトのボディの動きに touchesBegan を使用しています

   -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    {
        ccTime dt;
        UITouch *touch = [touches anyObject];
        CGPoint location = [touch locationInView: [touch view]];
         location=[[CCDirector sharedDirector]convertToGL:location];
        [self moveRight:dt];

    //    [self doWhateverYouWantToDo];
    //    [self doItWithATouch:touch];
    }
-(void)moveRight:(ccTime)dt
{
    CCSprite *ballright=(CCSprite *)ballbody->GetUserData();
    NSLog(@"Ball PositionX: %f",ballbody->GetPosition().x);
     NSLog(@"Ball PositionY: %f",ballbody->GetPosition().y);
    [ballright runAction:[CCMoveTo actionWithDuration:1 position:ccp(ballbody->GetPosition().x,ballbody->GetPosition().y+5*dt)]];

}

間違っている場合は、ロジックとコードを書いてください。助けてください。

ありがとう

4

2 に答える 2

1

ccTouchBegan でスプライト ボディの移動に LinearImpuls または LinearVelocity を適用し、ccTouchEnd で速度をゼロに適用してスプライトを停止します。

于 2012-08-25T06:53:31.803 に答える
0

継続的な移動の場合、CCMove*アクションは役に立ちません。最悪の場合、フレームごとに新しいCCMove *アクションを作成すると、移動が開始されるまでに1フレームの遅延が組み込まれているため、オブジェクトは効果的に移動を停止します。

速度ベクトル(CGPoint)を使用および変更し、それをフレームごとの位置と統合してオブジェクトを移動します。

于 2012-07-16T11:33:45.077 に答える