2011-10-27 3 views
0

스프라이트에 본질적으로 핵 (부모)과 전자 (어린이)가 있습니다. 나는 전자 궤도를 핵으로 만드는 방법을 찾고있다. 움직이는 앵커 포인트에 대해 여기 저기에 몇 개의 게시물을 발견했지만 스프라이트 자체가 아니라 스프라이트의 텍스처와 관련이있는 것으로 보입니다.Cocos2d - 하나의 스프라이트를 다른 스프 라이트 주위로 궤도/회전

이 내 부모 스프라이트 내 현재의 초기화 방법 :

self = [super init]; 
if (self) { 

    CCSprite *orbitAnchor = [CCSprite new]; 
    [self addChild:orbitAnchor]; 
    orbitAnchor.position = ccp(32,32); 

    CCSprite *orbiter = [CCSprite spriteWithFile:@"line.png" rect:CGRectMake(0, 0, 8, 8)]; 
    [orbitAnchor addChild:orbiter]; 
    orbiter.position = ccp(40,40); 

    CCAction *orbitAction = [CCRepeatForever actionWithAction:[CCRotateTo actionWithDuration:1 angle:720]]; 
    [orbitAnchor runAction:orbitAction]; 

    [self initAnimations]; 
} 

return self; 

그 숫자는하지만 모든 완전히 임의적 - 난 그냥 거기에 그들을 붙어 최상의 속에서 얻었다. 내가 원하는 것을하기위한 더 많은 프로그램 방식이 있다고 확신한다.

기본적으로, 나는 부모의 중심에서 어린이의 축 포인트를 설정 한 다음 그 점을 중심으로 회전하도록하는 방법을 찾고 있습니다. CCRotate 등을 사용하는 것이 상대적으로 간단한 것 같지만 어린이의 기준점을 이동하기 위해 검색 대상을 놓치고 있다고 생각합니다. 어떤 제안/다른 게시물?

감사합니다.

답변

1

[CCSprite new]가 비정상적으로 사용 중이며 지원되지 않을 수도 있습니다. 궤도 앵커 노드가 텍스처를 표시하지 않는 한, CCNode를 앵커로 사용할 수 있습니다.

기술적으로 당신은 내가 볼 수있는 것에서부터 모든 것이 정확합니다. 회전 작업없이 시도하고 대신 예약 된 업데이트 방법으로 방향을 수동으로 변경할 수 있습니다.

CCNode *orbitAnchor = [CCNode node]; 
    [self addChild:orbitAnchor z:0 tag:1]; 
    orbitAnchor.position = ccp(32,32); 

    CCSprite *orbiter = [CCSprite spriteWithFile:@"line.png" rect:CGRectMake(0, 0, 8, 8)]; 
    [orbitAnchor addChild:orbiter z:0 tag:2]; 
    orbiter.position = ccp(40,40); 

    [self scheduleUpdate]; 

업데이트 방법 : 당신이 인공 위성에 orbitAnchor에서 선을 그리려고처럼

-(void) update:(ccTime)delta 
{ 
    CCNode* orbitAnchor = [self getChildByTag:1]; 
    orbitAnchor.direction += 5; 
} 

이미지 파일 이름에서 그것은 보인다. 당신은 ccDrawLine으로 그 작업을 수행 할 수 있습니다 :

-(void) draw 
{ 
    CCNode* orbitAnchor = [self getChildByTag:1]; 
    CCNode* orbiter = [self getChildByTag:2]; 
    ccDrawLine(orbitAnchor.position, orbiter.position); 
} 
0

앵커 포인트. 자동으로 객체는 객체의 중심을 기준으로 배치됩니까? 앵커 포인트를 사용하면 주위를 이동할 수 있으므로 오브젝트를 회전하면 앵커 포인트를 중심으로 회전합니다. http://www.qcmat.com/understanding-anchorpoint-in-cocos2d/

+0

맞습니다. 노드의 위치에서 텍스처를 상쇄하므로이 방법을 권장하지 않습니다. 단순히 노드 계층 구조를 사용하면 더 많은 제어를 통해 동일한 효과를 얻을 수 있습니다. 노드 B가 다른 노드 A의 자식이고 노드 B가 노드 A에서 오프셋 된 경우 노드 A를 이동, 회전 또는 확장 할 수 있습니다. 노드 A를 중심으로 회전하는 것을 포함하여 노드 A와 노드 B가 그에 맞게 조정됩니다. – LearnCocos2D

+0

설명했습니다. anchorPoint를 변경하는 것이 왜 나쁜 습관입니까? http://stackoverflow.com/questions/7808981/moving-a-stick-figure-anchorpoints-animation-or-something-else/7810180#7810180 – LearnCocos2D

관련 문제