SpriteKitを使用してiOSで開発するSwift2を学び始めています。スプライトの目に見える部分に触れたかどうかを検出できないようです。SpriteKitを使用してスプライトの境界ボックス(アルファマスク)内の接触を検出する
let touchedNode = self.nodeAtPoint(location)
しかし、これはスプライトのタッチを検出:
私はこのように触れたノードを見つけることができます。スプライトの「透明でない」部分のタッチを検出したいと思います。
私が選択したノードのバウンディングボックスは、このようなタッチの場所が含まれている場合は、アルファマスクバウンディングボックスとテストとPhysicsBodyを作成してみました:
sprite.physicsBody = SKPhysicsBody.init(texture: sprite.texture!, size: sprite.size)
sprite.physicsBody?.affectedByGravity = false
if (touchedNode.containsPoint(location)){
しかし、それは助けにはなりませんでした。スプライトの透明部分をクリックすると、イベントが引き続きトリガーされます。
ドキュメントには「テクスチャ内のすべてのテクセルにゼロ以外のアルファ値が含まれている新しいフィジックスボディが作成されています」というメッセージがあります。
お時間をいただきありがとうございます。
PS:私のアルファ閾値ではもっと寛大な努力もしましたが、これも機能しませんでした(透明性が完全でない場合)。
UPDATE:
もう少し詳細を追加するには、私は、レベルエディタを構築しています。これは、ユーザーが選択したものに応じて多くのノードを作成することを意味し、これらのノードを選択/移動/回転/などできるようにする必要があります。実際にはPNG画像が自動的にxcassetteに追加されるので、SKSpriteNodesを使用しています。私はあなたがノードを選択すると、この値は、シーンエディタ(Xcodeの)に示されるように、PhysicsBodyのアルファマスクバウンディングボックスを使用することを決定し、選択すると、アルファマスクのハイライト私のことができるようにしたい私のスプライトの正確一部内部のタッチを検出する。
私が誤ったアイデアやテクニックを使用している場合は、教えてください。私はSwiftとSpriteKitを使い始めたので、これは可能です。
私は右のphysicsBodyを取得する(推奨されているように)physicsWordを照会し、このように接続されたノードの名前だ2
UPDATE:
let body = self.physicsWorld.bodyAtPoint(location)
print(body?.node?.name)
をしかし、これはまだ印刷されます私が境界ボックスの外に触れてもノードの名前は、私には分かりません。
ご協力いただきありがとうございます。
これを行うには良い方法がありますか? – Confused