【问题标题】:Scene Kit contact catagoryBitMasks always returning 1Scene Kit 联系人 catagoryBitMasks 总是返回 1
【发布时间】:2015-11-22 07:33:04
【问题描述】:

所以我使用了一个简单的碰撞结构,然后我用它来为我的碰撞对象设置分类掩码(见下文)。 但是,为正确碰撞触发的 didBeginContact 函数表示碰撞节点 categoryBitMasks 为 1,无论哪个节点发生碰撞。我是不是做错了什么?

这是结构,非常类似于 Apple 的 DemoBots 示例:

struct ColliderStruct {
let rawValue: UInt32

var categoryMask: UInt32 {
    return rawValue
}

static var Player: ColliderStruct  { return self.init(rawValue: 1 << 0) }
static var AI: ColliderStruct { return self.init(rawValue: 1 << 1) }
static var Ball: ColliderStruct   { return self.init(rawValue: 1 << 2) }
static var RedGoal: ColliderStruct   { return self.init(rawValue: 1 << 3) }
static var BlueGoal: ColliderStruct   { return self.init(rawValue: 1 << 4) }
static var Arena: ColliderStruct   { return self.init(rawValue: 1 << 5) }

var hashValue: Int {
    return Int(rawValue)
}

}

我这样设置类别:

arenaGeometry.physicsBody!.categoryBitMask = ColliderStruct.Arena.hashValue

然后我像这样检查它们:

func physicsWorld(world: SCNPhysicsWorld, didBeginContact contact: SCNPhysicsContact) {
    //printing to test
    print("A bitmask: \(contact.nodeA.categoryBitMask), B bitmask: \(contact.nodeB.categoryBitMask)")

    if (contact.nodeA.categoryBitMask == ColliderStruct.Player.hashValue || contact.nodeB.categoryBitMask ==  ColliderStruct.Player.hashValue ) {
        print("player hit something!")
    }
}

}

但是,位掩码始终报告为 1,并且冲突永远不会通过第二个打印语句:

A bitmask: 1, B bitmask: 1

我已经盯着这个太久了,有什么明显的问题吗? 非常感谢。

【问题讨论】:

    标签: ios swift scenekit


    【解决方案1】:

    有时你只需要从电脑上退后一点。

    print("A bitmask: \(contact.nodeA.categoryBitMask), B bitmask: \(contact.nodeB.categoryBitMask)")
    

    应该是

    print("A bitmask: \(contact.nodeA.physicsBody!.categoryBitMask), B bitmask: \(contact.nodeB.physicsBody!.categoryBitMask)")
    

    【讨论】:

    • 哦,我的话,这很尴尬。谢谢你,我再也不用深夜编程了。
    • 我们都曾在某个时候做到过。凌晨 2 点看起来几乎不可能的事情需要 5 分钟才能在第二天早上解决……我似乎热衷于经常重新学习的一课。
    • 刚刚做了同样的事情!谢谢!
    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 1970-01-01
    • 2016-05-01
    • 2016-11-21
    • 2019-10-10
    • 2014-04-13
    相关资源
    最近更新 更多