簡體   English   中英

Swift SceneKit:為什么它過早檢測到節點之間的聯系?

[英]Swift SceneKit: Why does it detect contact between nodes too early?

我正在嘗試使用SCNPhysicsContactDelegate構建一些項目,但發現它太早發現了節點之間的聯系。 我需要它是100%正確和正確的。 我附上了過早的聯系人檢測的屏幕截圖。 他們的物理機構有我的代碼:

nodeA代碼:

        nodeA = SCNNode(geometry: SCNBox(width: 0.3, height: 0.3, length: 0.3, chamferRadius: 0.05))
        nodeA.position = SCNVector3(0, 3.3, 0)
        nodeA.geometry?.firstMaterial?.diffuse.contents = UIColor.red
        nodeA.physicsBody = SCNPhysicsBody.dynamic()
        nodeA.physicsBody?.physicsShape = SCNPhysicsShape(node: nodeA, options: nil)
        nodeA.physicsBody?.categoryBitMask = PhysicsCategories.nodeA
        nodeA.physicsBody?.contactTestBitMask = PhysicsCategories.nodeB
        nodeA.physicsBody?.isAffectedByGravity = false
        nodeA.name = "nodeA"
        nodeA.opacity = 0
        self.scene.rootNode.addChildNode(self.nodeA)

nodeB代碼:(nodeB已經存在,因此我僅添加物理實體)

        nodeB.physicsBody = SCNPhysicsBody.kinematic()
        nodeB.physicsBody?.physicsShape = SCNPhysicsShape(node: nodeB, options: nil)
        nodeB.physicsBody?.categoryBitMask = PhysicsCategories.nodeB
        nodeB.physicsBody?.contactTestBitMask = PhysicsCategories.nodeA

聯系功能代碼:

        func physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact) {
            scene.isPaused = true
        }

不良碰撞圖像

能否請您幫我找到解決方案? 我期待着你們的聽證會。

謝謝雅庫布

我找到了解決方案! 這兩行導致不精確的接觸檢測:

nodeA.physicsBody?.physicsShape = SCNPhysicsShape(node: nodeA, options: nil)nodeA.physicsBody?.physicsShape = SCNPhysicsShape(node: nodeA, options: nil) nodeB.physicsBody?.physicsShape = SCNPhysicsShape(node: nodeB, options: nil)

問題在於,當您使用節點屬性創建SCNPhysicsShape()時,它是不精確的,但是當您使用節點幾何形狀創建時,所有這些操作都是完全正確和精確的。 在我的情況下,解決方案如下(用這些行替換問題行):

nodeA.physicsBody?.physicsShape = SCNPhysicsShape(geometry: SCNBox(width: 0.3, height: 0.3, length: 0.3, chamferRadius: 0.05), options: nil)nodeB.physicsBody?.physicsShape = SCNPhysicsShape(geometry: SCNBox(width: 0.1, height: 0.5, length: 1, chamferRadius: 0), options: nil)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM