当我触摸屏幕时,我想移动我的身体连续体,当我释放触摸时我想停止。 我正在使用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)]];
}
所以,如果它错了请告诉我写逻辑和代码 请帮助我。
由于
答案 0 :(得分:1)
应用LinearImpuls或LinearVelocity移动ccTouchBegan中的精灵体,并在ccTouchEnd中将速度应用于零以停止精灵。
答案 1 :(得分:0)
对于连续移动,CCMove *操作无用。在最坏的情况下,如果你每帧都创建一个新的CCMove *动作,该对象将有效地停止移动,因为在移动开始之前有一个内置的1帧延迟。
使用和修改速度矢量(CGPoint)并将其与每帧的位置集成以移动对象。