2011-12-20 3 views
0

내가 달성하고자하는 것은 내 CCSprite이 그것을 만질 때 다른 CCSprite를 따라 가게하는 것입니다. 이제 내가 따르는 것은 다른 CCSprite가 화면 위로 움직이는 애니메이션이 있다고 가정 해 보겠습니다. 그래서이 스프라이트가 내 스프라이트를 치면 내 메인 스프라이트가 화면 위로 이동해야합니다. 이 다른 스프라이트는 플랫폼이 될 것이므로 기술적으로는 결국 스프라이트가 다른 스프라이트의 최상위에 놓 이길 원하지만 이지만 플랫폼이 기본 스프라이트를 운반하는 것처럼 맨 위의 CCSprite를 따라 이동하게됩니다.만졌을 때 CCSprite가 다른 CCSprite를 따르도록 만드시겠습니까?

는 지금은 충돌 감지 부분을 다른 스프라이트 애니메이션을 만드는 방법을 알고하지만 어떻게 난 그냥 내 플랫폼을 만들 것 가지 어떻게 엘리베이터 작품 등도 내 주요 CCSprite를 '수행'? (ccTime) 좀 기능은, 그렇게하면 스프라이트 위치 플러스를 기반으로 다른 스프라이트의 위치를 ​​업데이트 할 수 쉬울 것이다 DT :

답변

1

난 당신이 "때 따라야하는"업데이트에 상태를 확인하는 플래그를 배치 할 수 있습니다 생각 : 방법 먼저 스프라이트의 위치에 따른 제 2 스프라이트 위치를 변경할 수 있습니다.

-(void)update:(CCTime)delta 
{ 
    if(condition == YES) 
    { 
     secondSprite.position = ccp (firstSprite.position.x + xOffSet , firstSprite.position.y + yOffSet); 
    } 
} 

+0

하나의 질문이지만, 게임 루프에서 CCSprite의 위치를 ​​설정하고 있기 때문에 가속도계의 움직임에 반응이 없습니다. 이미 게임 루프에 변수가 있지만 X 축의 스프라이트를 제어하므로 코드 예제에서 추측 할 수 있습니다. X에 대한 가속도계 변수를 대신 사용하고 Y에 대한 코드를 사용하겠습니까? 맞습니까? –

+0

예.이 로직 코드를 가속도계 코드와 함께 사용할 수 있습니다. – Haroon

+0

마지막 질문 하나, 나는 b2ContactListener를 사용하고 있는데, 2 개의 스프라이트가 충돌하면 if 문에서이 문제를 해결하려고한다. 내 추종자 요정 용 ivar 만 있습니다. 문제는 특정 CCSprite에 대한 참조가 없지만 태그를 가지고 있다는 것입니다. 그렇다면 내가 가지고있는 태그로 CCSprite에 대한 적절한 참조를 얻는 방법은 무엇입니까? –

1
  • 수동으로 넥스트에서 자신의 위치를 ​​업데이트하여, 작업을 사용하지 않고 처음 스프라이트를 이동할 수 있습니다 그것을 위로 놓기 위해 오프셋.

  • 또 다른 해결책은 그 부모로부터 추종자 스프 라이트를 제거하고 움직이는 노드의 자식으로 추가하는 것일 수 있습니다. 이것은 깜빡임과 성능 손실없이 수행 할 수 있다고 생각합니다.

편집 : 다른 솔루션 (어쩌면 최고의 하나) 당신이 그나마 수동으로 당신은 속성을 추가 할 수 있습니다

운동 일정을

작업과 함께 좋은 작품 좋은 접근 필요 움직이는 스프라이트 (CCSprite에서 서브 클래스해야 함, 이미 그렇게하지 않았다면), 추종자에 대한 참조를 유지한다.

@property (readwrite, nonatomic, assign) CCSprite *follower; 
@property (readwrite, nonatomic) BOOL followerActive; 

는 다음 추종자

platform.follower = followerSprite; 

를하고 개체에서 약한 참조를 추가, inits 게임에서, 당신은 둘 다 스프라이트를 만들 수 있으며, 기본 층의 차일로 추가 당신은 수 있도록해야 할 때 platform.followerActive = YES를 따르십시오. 이동 스프라이트이 시점에서

에는 setPosition를 등록
-(void) setPosition:(CGPoint)position { 

(self.followerActive)는 { self.follower.position가 = ccpAdd은 (위치 오프셋) 경우

을 무시할 수있다; } [super setPosition : position]; }

+0

예, @Haroon은 이것을 완벽하게 설명합니다! :) 정보 주셔서 감사합니다! –

1

당신은 어떤 노드가 다른 노드를 따르도록하는 CCFollow 조치를 사용할 수 있습니다 ..이 코드에 따라 .. 기본 논리가 여기보십시오.

+0

고마워 할 것입니다 : P –

관련 문제