2

レイヤーにスプライトを追加しました。レイヤーを変換すると、多くの問題が発生します。私が知る限り、レイヤーの中心(anchorPoint)は左下隅にあり、レイヤーの中央(右?)にあります-それについては完全にはわかりません。

下の図では、CClayer をピンクで、CCSprite を紫で表しています。私が中心だと思う場所を見てください。

レイヤーにスプライトを追加するとき、Cocos は A のようにすると思いますが、B のようにしたいのですが、どうすればよいですか? もう1つの可能性はCです。これはより良いと思いますが、レイヤーのアンカーポイントを中央に移動してスプライトをそこに配置する必要があります...その方法についての手がかりがありません。

ここに画像の説明を入力

4

3 に答える 3

3

CCSpriteのアンカーポイントを変更。

CCSprite *sprite = [CCSprite spriteWithFile:@"sprite.png"];

//For case A
sprite.anchorPoint = ccp(0.0f,0.0f); 
sprite.position = ccp(0.0f,0.0f);

//For case B
sprite.anchorPoint = ccp(0.5f,0.5f); 
sprite.position = ccp(0.0f,0.0f);


//For case c
sprite.position = ccp(ScreenWidth/2.0f, ScreenHeight/2.0f);
sprite.anchorPoint = ccp(0.5f,0.5f);
于 2012-07-17T05:50:20.407 に答える
0

アンカーポイントは相対座標です。(0.f, 0.f) はノードの左下隅、(1.f, 1.f) は右上隅です。すべての変換は、アンカー ポイントに対して行われます。ポジショニングもトランスフォーム。これは、アンカー ポイント (0.5f、0.5f) の場合、すべての配置およびその他の変換がノードの中心に対して適用されることを意味します。スプライトをレイヤーの左下隅に配置する場合は、そのアンカー ポイントを (0.f, 0.f) に設定し、位置を (0.f, 0.f) に設定するだけです。これは、スプライトの左下隅が親レイヤーの (0.f, 0.f) 座標に配置されることを意味します。

[sprite setAnchorPoint:ccp(0.f, 0.f)];
[sprite setPosition:ccp(0.f, 0.f)];
[layer addChild:sprite];
于 2012-07-17T15:27:44.020 に答える
-1

スプライトをレイヤーに追加すると、CocosはAのように機能すると思いますが、Bのようにしたいと思います。

行動を推測しようとしないでください。レイヤーにスプライトを追加して、何が起こるかを確認します。

またCCNode、、を含むそのすべてのサブクラスには、親の原点に対するノードの位置を表すプロパティがありますCCSpriteposition

于 2012-07-17T04:45:33.007 に答える