我有一个精灵:
ombreoeuf1 = [CCSprite spriteWithFile:@"mangeurcentremieu3_03.png" ];
ombreoeuf1.position = ccp(240,160);
[self addChild:ombreoeuf1];
我想不断地围绕一个锚点旋转它。我该怎么做?
我有一个精灵:
ombreoeuf1 = [CCSprite spriteWithFile:@"mangeurcentremieu3_03.png" ];
ombreoeuf1.position = ccp(240,160);
[self addChild:ombreoeuf1];
我想不断地围绕一个锚点旋转它。我该怎么做?
您可以先通过设置属性来设置锚点anchorPoint
,例如:
[ombreoeuf1 setAnchorPoint:ccp(0,0)]
然后通过设置另一个属性来设置旋转(以度为单位)rotation
:
[ombreoeuf1 setRotation:90]
anchorPoint
并且rotation
都是CCNode 类的属性,它是 CCSprite 的父类。
更新
根据您的评论,您似乎想要的是一个永不停止的旋转精灵?这是一个让精灵每 0.1 秒旋转 10 度的示例:
[sprite runAction:[CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration:0.1 angle:10]]];
CCNode 子类的所有变换都是相对于锚点进行的。在所有转换过程中,anchorPoint 将具有相同的位置。例如,如果您将带有anchorPoint (0.f, 0.f) 的精灵放置到屏幕左下角的位置(0.f, 0.f),然后设置它的比例,例如, 5.f,变形后会停留在左下角,只是会变大。所以所有的旋转都会自动相对于锚点进行。
还有一件事。CCSprite 默认具有 anchorPoint (0.5f, 0.5f) 和一些内容大小,因此您只需将其设置为另一个即可查看转换的变化。如果你想用 CCNode 来做,你必须将它的 relativeToAnchorPoint 属性设置为 YES 并手动设置 contentSize。
您可以为此使用 CCRepeatForever 操作。例如,
id rotateAction = [CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration: yourDuration
angle: anyAngleForGivenTime]];