我試圖確定在旋轉節點的路徑中是否存在可能的接觸。我的想法是做一個遞增的旋轉(對於90度環10次9度)並且每次都進行接觸測試。我的問題是,即使我每次都調用updateCollisionPairs(),即使路徑中存在對象,聯繫人也是空的。下面是說明它在某種程度上圖片(面朝前):SceneKit - 使用physicsWorld.updateCollisionPairs()的即時接觸檢測
我想通過旋轉90度節點A,但在此之前我需要檢查「路徑是明確的」 - 在這個情況下節點B是這樣的,所以我期待着一個或多個增量旋轉命中。
節點A和節點B都類型.kinematic,與categoryBitMask 2
Normaly我做在physicsWorld模擬後呈現循環(willRenderScene)接觸測試被更新,並且這觸發細,所以我知道我的physicsBody & contactBitmasks設置正確,但在這種特定情況下,我不能等待另一個循環執行接觸檢測,原因很明顯。
代碼,我試過至今:
for i in 1...10 {
nodeA.transform = SCNMatrix4Mult(nodeA.transform, SCNMatrix4MakeRotation(GameHelper.deg2rad(deg:90)/10, 0, 0, 1))
nodeA.physicsBody.resetTransform()
self.scnScene.physicsWorld.updateCollisionPairs()
let contacts = self.scnScene.physicsWorld.contactTest(with: (nodeA.physicsBody)!, options: [SCNPhysicsWorld.TestOption.collisionBitMask:2])
print(contacts)
if contacts.count > 0 {
print("CONTACT !!!!")
}
}