Ios 框架的接触法

Ios 框架的接触法,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我正在尝试实现一种接触方法,以了解我的播放器块何时接触到黄色框架。下面是我到目前为止的代码。当我将播放器块拖动到黄色帧时,什么也没有发生 导入SpriteKit 导入iAd 结构位掩码{ 静态let player:UInt32=0x1当前您正在尝试检查两个静态实体之间的接触,但SpriteKit不会生成任何接触事件,除非至少有一个实体是动态的 在您的情况下,这是因为基于边缘的物理实体在默认情况下是静态的,而您的播放器也是静态的,这意味着没有联系人 要解决此问题,您应该将玩家物理体上的属性设置为

我正在尝试实现一种接触方法,以了解我的播放器块何时接触到黄色框架。下面是我到目前为止的代码。当我将播放器块拖动到黄色帧时,什么也没有发生

导入SpriteKit
导入iAd
结构位掩码{

静态let player:UInt32=0x1当前您正在尝试检查两个静态实体之间的接触,但SpriteKit不会生成任何接触事件,除非至少有一个实体是动态的

在您的情况下,这是因为基于边缘的物理实体在默认情况下是静态的,而您的播放器也是静态的,这意味着没有联系人

要解决此问题,您应该将玩家物理体上的属性设置为
true
,如下所示:

player.physicsBody!.dynamic = true

就这样,谢谢!
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 == BitMask.player) && (secondBody.categoryBitMask == BitMask.obstacle) {
        // do your thing 
        print("Player contacted with obstacle")
        self.view?.paused = true
    }

    if (firstBody.categoryBitMask == BitMask.player) && (secondBody.categoryBitMask == BitMask.frame) {
        // do your thing
        print("Player contacted with frame")
        self.view?.paused = true
    }
}
player.physicsBody!.dynamic = true