現在のスプライト ノードのすぐ左または右にスプライト ノードがあるかどうかを検出しようとしています。
これは簡単に思えますが、奇妙な動作が見られます。
現在のノードと同じ高さで、現在のノードと同じ原点を持つ細い四角形 (幅 = 1 ポイント) を作成しました。
例えば:
// Create a thin rect that's aligned to the left edge of 'block'
CGRect adjacentFrame;
adjacentFrame = CGRectMake(block.frame.origin.x,
block.frame.origin.y,
1,
block.frame.size.height);
// Shift the rect left a few points to position it to the left of 'block'
adjacentFrame.origin.x -= 10;
次に、rect (adjacentFrame) がノードと交差しているかどうかをテストします。
SKPhysicsBody* obstructingBody;
obstructingBody = [self.physicsWorld bodyInRect:adjacentFrame];
さて、奇妙なことに、obstructingBody には「ブロック」自体が含まれています。
rect の位置を確認できるように、AdventureFrame のフレームを使用してシーンに SpriteNode を追加するコードも追加しました。「ブロック」の残りの数ポイントが明確に表示されており、明らかに触れていません!
ここで何が起こっているのでしょうか?
ありがとう、クリス