これを行う方法については、インターネット上で何も見つかりませんでした。物理的なボディタッチにコードの行を実行しようとしているだけです。この場合、私は物理学のボディと地面のSKSpriteNodeを持っています。彼らが触れると、コードの行を実行する必要がありますこれはこれまで私が見つけたすべてです。SpriteKitで2つのオブジェクトが接触したときを検出する方法
let catGroup:UInt32 = 0x1 << 0
let groundGroup:UInt32 = 0x2 << 1
cat.physicsBody?.categoryBitMask = catGroup
cat.physicsBody?.contactTestBitMask = groundGroup
ground.physicsBody?.categoryBitMask = groundGroup
ground.physicsBody?.contactTestBitMask = catGroup
と、ここで私は
func didBeginContact(contact: SKPhysicsContact) {
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask
{
firstBody = contact.bodyA
secondBody = contact.bodyB
}
else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if firstBody.categoryBitMask==0 && secondBody.categoryBitMask==1 {
print("contact")
}
}
はので、私はcatGroupとgroundGroupで第1の本体と第2のボディを交換する必要があり混乱しているどこにあるのでしょうか?わからないわよ
可能な複製を助け[初心者迅速スプライトキット - ノードの衝突検出ヘルプ(SKPhysicsContact)](http://stackoverflow.com/questions/26270504/beginner-swift-sprite-kit -node-collision-detection-help-skphysicscontact) –
didBeginContactを持っているクラスを設定しましたか?Physivs Contact Delegateプロトコルを持っていて、「代理人」プロパティを設定しましたか?それを行った後で、あなたのdudBeginContactにprint( "接触が検出されました")を入れて、呼び出されているかどうか(より適切にはブレークポイントを設定するかどうか)を確認します。 –
firstBodyとsecondBodyを置き換えることはできません。categoryBitMasksを調べて、どちらが猫で、どちらが地面であるかを調べる必要があります。 –