2012-03-09 21 views
0

次のコードを使用してスプライトを回転していますが、回転中にスプライトの位置を特定するのに苦労しています。私はスプライトが回転する位置を見つけることができますが、現在の位置は見つけられません。回転スプライトの位置

[item convertToWorldSpace:CGPointZero]; 
[item setPosition:ccp(375,160)];   
id rotate = [CCRotateBy actionWithDuration:3 angle:360]; 
[item runAction: [CCRepeatForever actionWithAction: [CCSequence actions: rotate,nil]]]; 
+0

スプライト位置は、回転する位置です。私はあなたがアンカーポイントを使ってこの点から離れたところに移動しましたか? –

+0

正確に。アンカーポイントを使用して、スプライトをスプライトの定義された位置から移動しました。その結果、位置は実際に回転するスプライトの位置を表すわけではありません。では、実際の場所はどのように見えますか? – weber

+1

ヒント:アンカーポイントを変更しないでください。同じ効果を得るには、ccnodeを追加してスプライトを追加し、スプライトをオフセットします。スプライトの代わりにノードを回転すると、変更されたanchorPointでスプライトを回転させるのと同じ効果が得られます。次に、ノードとスプライトの回転位置の両方があります。 – LearnCocos2D

答えて

-1

スプライトの位置を変更する必要はありません。すべての変換(回転、スケールなど)は、ノードのanchorPointに対して相対的に進みます。あなたのスプライトを視覚的に同じ位置に滞在したい場合は、単にちなみに

ccp(0.5f, 0.5f) 

にanchorPointを設定し、CCSpriteは、デフォルトでは、このようなanchorPointを持っています。

すべての変換中に、ノードのanchorPointは、このノードに設定した位置になります。あなたは

​​

にanchorPointを設定するのであれば、あなたのスプライトの左下隅には、拡大縮小、回転中の同じ位置になります、など

また、あなたはCCNodeの独自のサブクラスことを、忘れてはなりません(CCSpriteではなく)は、インスタンスのプロパティisRelativeToAnchorPointをYESに設定するまで、anchorPointプロパティに反応しません。

[yourNode setIsRelativeAnchorPoint:YES]; 
+0

これは単に質問に答えません。ユーザーは、アンカーポイント/ –

+0

の影響を受けて、その変換を考慮してスプライトの位置を見つける方法を尋ねます。アンカーポイントの使用方法を説明しようとしました。彼の問題はアンカーポイントの誤解です – Morion

+0

私は私の投票に立つ。これは答えの良い補足ですが、私はあなたが実際に質問に答えていないと主張します。 –

関連する問題