2014-04-14 1 views
0

저는 Cocos2d를 처음 접했고 스프라이트를 위아래로 확장하려고 구현하려고합니다. CCEaseInOut을 사용하여 작업을 수행하고 있습니다. 다음과 같이 내 코드는 같습니다 CCScaleTo는 스케일링과는 별도로 CCSprite를 이동시킵니다.

barrel setAnchorPoint:ccp(0.5,0.5)]; 
id scaleUpAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:.35 scaleX:1.5 scaleY:1.5] rate:1.0]; 
id scaleDownAction = [CCEaseInOut actionWithAction:[CCScaleTo actionWithDuration:.35 scaleX:1.0 scaleY:1.0] rate:1.0]; 
CCSequence *scaleSeq = [CCSequence actions:scaleUpAction, scaleDownAction, nil]; 
[barrel runAction:scaleSeq]; 

barrel

유형 CCNode이다.

센터 주변에서 스케일링이 발생할 수 있으므로 anchorPoint(0.5,0.5)으로 설정하려고했습니다. 그러나 그것은 도움이되지 않습니다.

저는 비슷한 질문을 보았습니다 : CCSprite is moved when using CCScaleTo or CCScaleBy. 불행하게도이 문제를 해결할 수있는 대답은 없습니다.

누군가가 올바른 방향으로 나를 가리킬 수 있다면 좋을 것입니다.

참고 : 배럴 개체가 box2d 개체로 사용되고 있음을 언급하는 것이 유용 할 수 있습니다. 거기에서 문제가 발생할 수 있습니까? 건배!

참고 : 내 코드에서 이미 다음 한 :

NSObject* bodyUserDataA = (__bridge NSObject*)contact->GetFixtureA()->GetBody()->GetUserData(); if ([bodyUserDataA isKindOfClass:[ODPPBarrel class]]) { barrel = (ODPPBarrel *)bodyUserDataA; }

+0

'barrel setAnchorPoint : ccp (0.5,0.5) ;;'문을 제거해도 문제가 해결되지 않습니다. – jackofblades

답변

0

항상이 반드시 요구하지 않는 한 노드의 anchorpoints을 변경하지보십시오. 기본적으로 모든 노드의 앵커 포인트는 0.5로만 설정됩니다.

id scaleUpAction = [CCScaleTo actionWithDuration:.35 scale:1.5]; 
id scaleDownAction = [CCScaleTo actionWithDuration:.35 scale:1.0]; 
CCSequence *scaleSeq = [CCSequence actions:scaleUpAction, scaleDownAction, nil]; 

이제 배럴 형 CCSprite이며 다음 b2Body의 유저 데이터 필드에 사용되는 경우 : Box2D의 세계에서 몸 (예를 들어, myBody)을 얻는다.

CCSPrite *tmpSPrite = (CCSPrite *)myBody->getUserData; 
if(tmpSprite) 
    [tmpSPrite runAction:scaleSeq]; 
+0

Krish에 답 해주셔서 감사합니다. 나는 터지는 결과를 정확하게 찾고 있지 않다. 내가 찾고있는 것은 스프라이트를 1.0에서 1.5로 빠르게 확대 한 다음 1.5에서 1.0으로 빠르게 축소하는 것입니다. 당신이 제공 한 코드는 0.85에서 1.0으로 스프라이트를 확대하는 것으로 보입니다. 그러나 그것은 문제가 아닙니다. 내가 직면하고있는 문제는 스프라이트가 밖으로 튀어 나오기보다는 옆으로 움직여 같은 지점에서 움직이는 것입니다. 제 코드에 무엇이 잘못 되었을지 제안 해 주시겠습니까? 위의 코드로도 문제가 해결되지 않습니다. – jackofblades

+0

배럴 객체가 box2d 객체로 사용되고 있음을 언급하는 것이 유용 할 수 있습니다. 거기에서 문제가 발생할 수 있습니까? – jackofblades

+0

배럴의 종류는 무엇입니까? 그것은 클래스 CCSPrite이거나 b2Body인가 아니면 CCSprite이고 b2Body의 userdata에 사용됩니까? – SaffronState

관련 문제