2015-01-22 3 views
0

두 개의 움직이는 객체를 따라가는 선을 그려야합니다. 개체가 서로 독립적으로 이동하더라도 각 끝이 개체 중 하나에 연결된다는 것을 의미합니다. 여기 내 선 그리기에 대한 내 코드는 다음과 같습니다두 개의 독립적 인 객체를 따르는 선 그리기

CCDrawNode *draw = [[CCDrawNode alloc] init]; 
CCColor *color = [[CCColor alloc]initWithCcColor3b:ccc3(140, 100, 10)]; 


CGPoint worldCoordCart = [_cart convertToWorldSpace: _cart.position]; 
CGPoint worldCoordClaw = [_claw convertToWorldSpace: _claw.position]; 


[draw drawSegmentFrom:worldCoordCart to:worldCoordClaw radius:5 color: color]; 


[self addChild:draw]; 

가 어떻게 선은 항상 두 객체에 연결되도록 의미에서 무승부 방법을 업데이트하려고 가겠어요 ? 내 입장이 똑같아 야한다고해도 내 선분은 내 물건 사이에 어떻게 있지 않습니까? 세계 공간의 위치 파악에 관해서 나는 근본적인 것을 놓치고있는 것처럼 느껴집니다.

답변

0

_cart.position은 _cart가 아니라 상위 위치입니다. 시도해보십시오.

CGPoint worldCoordCart = [_cart.parent convertToWorldSpace:_cart.position]; 

같은 이름은 _claw입니다.

또한 CCDrawNode에 포함 된 그리기 프리미티브를 업데이트 할 수 없다고 생각합니다. 내 생각에 당신은 CCDrawNode을 서브 클래스하고 시작과 끝 위치를 업데이트하는 메소드를 제공해야한다고 생각한다. 둘 중 하나가 업데이트되면 clear 메서드를 사용하여 시작한 다음 업데이트 된 좌표가있는 새 선 세그먼트를 추가하기 만하면됩니다.

+0

고마워, 내 장바구니의 경우 라인 위치가 고정되었지만 발톱 위치가 여전히 엉망입니다. 발톱이 끊임없이 돌아가고 있기 때문일 수 있습니까? 어떤 종류의 업데이트 방법을 사용 하시겠습니까? CCActionRepeat 이상 일정 방법의 라인에? – Sp3kk

+0

잠깐, 나는 처음에 당신의 대답을 오해했다고 생각합니다. 그 시점에서 정확한 위치로 선분을 그려야한다는 것을 의미합니까? 그리고 위치가 바뀌면 선을 완전히 그려서 완전히 알고있는 것을 그립니다. 그리고 내 자신의 방법을 서브 클래 싱하고 만들지 않고서는 가능하지 않겠습니까? (죄송 합니다만, Cocos2d와 Objective-C에 대해 아직 신선한 상태입니다.) – Sp3kk

+0

예, 업데이트시 서브 클래스없이이 작업을 수행 할 수 있지만, 업데이트 할 때 참조 할 수 있도록'CCDrawNode'에 iVar가 있어야합니다. 그리고 네, 회전과 스케일링은 당신의 마음과 함께 플레이 할 수 있습니다. 서브 클래 싱을 사용하면'self'' 클래스 코드를 어지럽히 지 않고 하나의 편리한 장소에서이 draw의 복잡성을 캡슐화 할 수 있습니다. gluck. – YvesLeBorg