Cocos2D帮助:如何连续旋转一个精灵并在旋转的精灵中生成子精灵。

4

我是cocos2D的新手,有人能推荐一个简单的解决方案吗?

我有一个风车,上面有8根杆子,每根杆子相隔45度,其中一半在屏幕上,另一半在屏幕外。我想让风车旋转,并让它无限旋转。同时,我想将一个子节点附加到风车杆子的末端,并使其随着风车一起旋转。希望有一个简单的解决方案。

编辑

我已经能够用以下代码旋转风车:

windmill = [CCSprite spriteWithFile:@"Chorki.png"];
windmill.position = CGPointMake(winSize.width*0.02f, winSize.height*0.56f);
windmill.scale = 0.55f;
[self addChild:windmill z:0];
CCRotateBy *rot = [CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration:5 angle: 360]];
[windmill runAction:rot];

现在请帮我解决如何在每个风车杆的末端添加子精灵,总共有8个杆,每个杆之间相隔45度。

2个回答

9
为了让CCSprite永远旋转,您可以使用类似以下的代码:
[windmill runAction:[CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration:5.0 angle:360]]];

如果你将任何CCSprite作为子节点添加,它也会旋转。你分配给子节点的位置是基于父节点的,请注意这一点。

编辑1

如果你知道圆的半径,可以进行一些数学计算,得到想要的位置。但是,如果不需要计算位置,只需尝试和调整即可获得所需的效果。可以先尝试不旋转的风车。


谢谢!我刚刚要更新我的帖子,因为我一个小时前自己实现了这部分。如果您能帮我完成第二部分,也就是如何在风车的每个杆的末端添加一个子精灵,请帮忙一下。 - Shahnawaz

1
你将你的动作 "rot" 声明为 CCRotateBy 的一个实例,但当你分配它时,你从 [CCRepeatForever[...]]; 开始。如果你想的话,你可以这样做:CCRotateBy *rot = [CCRotateBy actionWithDuration:5 angle:360];,然后 [windmill runAction:[CCRepeatForever actionWithAction:rot]];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接