0

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

它工作得很好,我的问题是我想动态添加孩子(敌人),就像每 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 而不是 Parallax。为了以与 Parallax 中最前面的子层相同的速度移动敌人,我执行了以下操作:

更新中:(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));
}
4

1 回答 1

0

您可以将敌人添加CCSprites到您的前景CCLayer(而不是直接将它们添加到您的CCParallaxNode)。此外,我不建议在这种特殊情况下使用操作(例如CCMoveTo);你可以更新你的精灵位置,就像你对你的所做的那样gameBackground,并“手动”检查它们是否不在屏幕上。

于 2013-08-12T16:12:54.393 回答