0

ゲーム レイヤーと、TestNode という子ノード (CCNode) を用意しました。TestNode にスプライト シートを追加し、このスプライト シートにいくつかの「ミサイル」を追加しました。今私の問題は、これらのミサイルとゲーム レイヤー内のオブジェクトとの衝突検出です。座標がおかしいように見えるからです。

私はミサイルの実装で次のものを持っています:

//first I get the Game layer
GameLayer *gL = (GameLayer *)self.parent.parent.parent; 
//parent = spritesheet, spritesheet's parent = TestNode, TestNode's parent = Game layer

//Now I convert the coordinates of missile to Game Layer's node space
CGPoint realPos = [gL convertToNodeSpace:self.position];

これは大まかに私が自分のコードで行っていることです...そして機能していないようです! 私は TestNode でほぼ同じ衝突検出を行っており、完全に正常に動作しているようです。スプライトシートのせいですか?ここ数日苦労していますが、まったく機能しません。変更は、私が間違っていることのヒントをほとんど与えてくれません。つまり、あなたは私の最後の希望です...

4

1 に答える 1

1

ミサイルの位置を世界空間に変換したい:

CGPoint realPos = [self convertToWorldSpace:position];

それでも正しくない場合は、anchorPointを変更した可能性がありますか?その場合、視覚部分(テクスチャ)は単に位置からオフセットされ、それを見るだけでは正しくないように見える場合があります。

self.parent.parent.parentなどについては…この回答の後半を読む必要があります。これは壊れやすい構造であるため、ノード階層を変更すると簡単に壊れてしまう可能性があるため、お勧めできません。

于 2012-09-18T11:32:03.817 に答える