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 和 ccTouchEnd 中应用 LinearImpuls 或 LinearVelocity 来移动精灵体,停止精灵时应用速度为零。

于 2012-08-25T06:53:31.803 回答
0

对于连续移动,CCMove* 动作没有用处。在最坏的情况下,如果您每帧创建一个新的 CCMove* 动作,对象将有效地停止移动,因为在移动开始之前有一个内置的 1 帧延迟。

使用和修改速度矢量 (CGPoint) 并将其与每帧的位置相结合以移动对象。

于 2012-07-16T11:33:45.077 回答