誰かが次のシナリオを検討し、私に提案を与えますか:私は1つのCCSpriteBatchNodeを持つ1つのGameplayLayerで基本的なcocos2dゲームを実装しています。次のような3つのCCSpriteを持つGameObject:CCNodeが1つあります。
CCSprite *bodySprite;
CCSprite *hairSprite;
CCSprite *eyesSprite;
初期化するときGameObject
、私はGameObject
その子としてスプライトを次のように追加しています:
[self addChild:bodySprite];
[self addChild:hairSprite];
[self addChild:eyesSprite];
このようにして、ノード(GameObject
)の位置や回転などを変更でき、すべてのスプライトは変更の影響を受けますが 、GameObject
シーンに複数のsを追加すると、 「各スプライトはそれ自体を描画します。これは、スプライトごとに1つの追加の描画呼び出しを意味します」。
パフォーマンスの問題を修正するために、この投稿を読んだ後、次のように初期化時GameObject
に'sスプライトをGameplayLayer
'sに追加することにしました。CCSpriteBatchNode
[[GameplayLayer sharedGameplayLayer].sceneSpriteBatchNode addChild:bodySprite];
[[GameplayLayer sharedGameplayLayer].sceneSpriteBatchNode addChild:hairSprite];
[[GameplayLayer sharedGameplayLayer].sceneSpriteBatchNode addChild:eyesSprite];
今だけ、GameObject
スプライトの位置を1つずつ設定する必要があります。
self.position = ...
私は使用する必要があります
bodySprite.position = ...
hairSprite.position = ...
eyesSprite.postion =...
GameObject
これは退屈な変更であり、スプライトの構成として自分を設計したことの最大の利点の1つを失います。
質問:ノードの位置を使用して、構成するスプライトの位置に影響を与える方法はありますか?それらを子として両方に追加できますGameObject
かsceneSpriteBatchNode
?正しいアプローチではない場合、スプライトの位置を1つずつ設定していますか?