2013-08-12 1 views
0

저는 CCParallaxNode를 사용하여 Ray Wenderlich의 카테고리와 함께 3 개의 배경을 스크롤하여 화면 밖으로 나갈 때 배경을 이동 시켰습니다.스크롤 할 때 CCParallaxNode 추가 자식

제 문제는 제가 매 5 초마다 비행 중 어린이를 추가하고 싶다는 것입니다. 일반적으로 나는 CCMoveTo 액션을 사용하여 부모 레이어에 적을 추가하여 스크린 위에서 움직이게하지만, 시야를 시차 레이어의 전경을 따라 가길 원합니다.

게임이 진행됨에 따라 스크롤 속도가 천천히 증가합니다. 누군가가 이것 좀 도와 줄래

CGFloat offset = self.gameBackground.position.x; 
[self.gameBackground addChild:enimy z:5 parallaxRatio:ccp(0.1, 0.1) positionOffset:ccp(offset, 85)]; 

를 호출 할 때

나는 오프셋 권리를 알아낼 수없는 이유는 무엇입니까?

편집 :

I'am가 배경 이동이 일을 :

- (void)update:(ccTime)delta 
{ 
    self.speed -= 0.5f; 
    CGPoint backgroundScrollVel = ccp(self.speed, 0); 
    self.gameBackground.position = ccpAdd(self.gameBackground.position, ccpMult(backgroundScrollVel, delta)); 
} 

감사를

광선 기사 : http://www.raywenderlich.com/3611/how-to-make-a-space-shooter-iphone-game

최종 솔루션 :

나는 Parallax 대신에 CCLayer에 enimies를 추가하기 만했다. 갱신에

: (ccTime) 델타 : 시차에서 가장 중요한 계층 어린이와 같은 속도로 enimies를 이동하려면 난 다음 한

CGFloat parallaxRatio = 0.1f; 
CGPoint backgroundScrollVel = ccp((self.backgroundSpeed * - 1) * parallaxRatio, 0); 
for(WKEnimy *enemy in self.enimies) 
{ 
    enemy.position = ccpAdd(enemy.position, ccpMult(backgroundScrollVel, delta)); 
} 
+0

'gameBackground'는'ParallaxNode' 또는 그 자식 중 하나입니까? – ssantos

+0

gameBackground가 ParallaxNode입니다. –

+0

이 경우, 적 층 스프라이트를 하위 레이어 중 하나 (실제로 주인공 Sprite를 보유하고있는 레이어)에 추가하는 것이 더 쉽지 않습니까? – ssantos

답변

0

당신이 (당신의 전경 CCLayer에 적을 CCSprites를 추가 할 수 있습니다 CCParallaxNode에 직접 추가하는 대신). 게다가, 나는 특별한 경우에 대해 행동 (예 : CCMoveTo)을 사용하지 않는 것이 좋습니다. gameBackground을 사용하여 스프라이트 위치를 업데이트하고 화면에서 '수동으로'확인하십시오.

+0

이것은 실제로 내가 이미 가지고 있지만 CCMoveTo를 사용하여 화면을 가로 질러 이동합니다. 나는 그것을 어떻게 다르게 움직일 것인가? –

+0

내가 가진 것처럼 보입니다! 업데이트 게시 1 분 ... –

+0

당신은'gameBackground'를 움직이는 것과 같은 방식으로 움직일 것입니다. 내 머리 꼭대기에서 수평 이동을 위해 enemy.position = ccp (enemy.position.x - offset, enemy.position.y)와 같은 것이됩니다. – ssantos

관련 문제