0

私はスプライトを持っています:

ombreoeuf1 = [CCSprite spriteWithFile:@"mangeurcentremieu3_03.png" ];
ombreoeuf1.position = ccp(240,160);
[self addChild:ombreoeuf1];

そして、アンカーポイントを中心に常に回転させたいと思います。どうすればいいですか?

4

2 に答える 2

1

プロパティを設定することで、最初にアンカーポイントを設定できますanchorPoint。次に例を示します。

[ombreoeuf1 setAnchorPoint:ccp(0,0)]

次に、別のプロパティを設定して回転 (度単位) を設定しますrotation

[ombreoeuf1 setRotation:90]

anchorPointrotationはどちらも、 CCSprite の親であるCCNode クラスのプロパティです。

アップデート

あなたのコメントによると、あなたが望むのは、決して止まることのない回転するスプライトのようですか? 以下は、スプライトを 0.1 秒ごとに 10 度回転させる例です。

[sprite runAction:[CCRepeatForever actionWithAction:[CCRotateBy actionWithDuration:0.1 angle:10]]];
于 2012-04-20T04:46:13.527 に答える
0

CCNode サブクラスのすべての変換は、アンカー ポイントに対して相対的に行われます。すべての変換中に、アンカーポイントは同じ位置になります。たとえば、アンカーポイント (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]];
于 2012-04-20T08:45:45.360 に答える