CC Parallax节点在滚动时添加子节点

时间:2013-08-12 14:54:55

标签: cocos2d-iphone

我正在使用CCParallaxNode滚动3个背景以及Ray Wenderlich的类别,以便在他们离开屏幕时移动背景。

它工作得很好,我的问题是我想动态添加孩子(enimies),就像每5秒一样。通常情况下,我会使用CCMoveTo动作将敌人添加到父图层,以便在屏幕上为他设置动画,但我希望我的动画能够跟随视差图层的前景。

我随着游戏的进行慢慢增加滚动速度。

在调用

时,我似乎无法找出正确的偏移量
CGFloat offset = self.gameBackground.position.x;
[self.gameBackground addChild:enimy z:5 parallaxRatio:ccp(0.1, 0.1) positionOffset:ccp(offset, 85)];

有人可以帮我解决这个问题吗?

编辑:

我这样做是为了移动背景:

- (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

最终解决方案:

我最后只是在CCLayer中添加了enimies而不是Parallax。要以与Parallax中最前层孩子相同的速度移动enimies,我会执行以下操作:

更新中的

:( ccTime)delta:

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));
}

1 个答案:

答案 0 :(得分:0)

您可以将敌人CCSprites添加到前景CCLayer(而不是直接将其添加到CCParallaxNode)。此外,我不建议对此特定情况使用行动(例如CCMoveTo);你可以用gameBackground更新你的精灵位置,然后“手动”检查它们是否在屏幕外。