2012-07-16 3 views
0

화면을 터치하면 계속 이동하고 터치를 놓으면 중지합니다. 나는 box2d와 cocos2d를 사용하고 있는데, 왜 내 코드가 잘 수행되지 않는지 잘 모릅니다. 내가 스프라이트 몸의 움직임본문 화면을 터치하면 연속 이동합니다

-(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)]]; 

} 

나 논리와 코드 나를 제발 도와주세요 쓰기 알려 주시기 바랍니다보다 그렇다면 그 잘못에 대한 사용 touchesBegan.

감사합니다.

답변

1

ccTouchBegan의 Sprite Body 이동을 위해 LinearImpuls 또는 LinearVelocity를 적용하고 ccTouchEnd에서 스프라이트 중지를 위해 속도를 0으로 적용합니다.

+0

작동하지만 화면을 터치하면 움직이고 해제 후에는 중지되지만 다음 시간 이후에는 탭 화면이 작동하지 않습니다. –

0

연속 동작의 경우 CCMove * 동작이 유용하지 않습니다. 최악의 경우, 매 프레임마다 새로운 CCMove * 액션을 생성하면, 오브젝트는 이동이 시작되기 전에 내장 된 1 프레임 지연이 있기 때문에 효과적으로 멈출 것입니다.

속도 벡터 (CGPoint)를 사용하고 수정하고 모든 프레임의 위치와 통합하여 개체를 이동하십시오.

관련 문제