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