Apple Documentation提供了一个看似简单的示例,说明如何在Objective C中使用convexSweepTest。不幸的是,文档中的示例代码(现在不存在)存在于Swift中。
我可以将它移动到Swift并且编译没有错误,但是我无法将'contacts.count'变为零以外的任何东西,无论有多少个对象(都有物理实体)我添加到场景中,包括我用。进行convexSweepTest。
我有一层静态物体,沿x-z轴有一个physicsBody,我的物体正在做一个y值为正的convexSweepTest。
出于某种原因,我需要在SCNPhysicsBody(type:shape)构造函数中添加自定义physicsShape(反对将其保留为nil as described in the documentation应该工作),以便使convexSweepTest识别physicsShape,以便它将编译
这是一段代码片段,它编译时没有编译错误但不起作用:
let physicsShape = SCNPhysicsShape(node: selectedBlock, options: nil)
selectedBlock.physicsBody = SCNPhysicsBody(type: .dynamic, shape: physicsShape) // why can't I use nil? who knows
// note: 'selectedBlock' has a positive y value ... and there are objects that can be collided with at every y=0 point
let current = selectedBlock.transform
let downBelow = SCNMatrix4Translate(current, 0, -selectedBlock.position.y, 0)
let physicsWorld = SCNPhysicsWorld()
let physicsContacts = physicsWorld.convexSweepTest(with: (selectedBlock.physicsBody?.physicsShape)!, from: current, to: downBelow, options: nil)
print("count \(physicsContacts.count)") // ALWAYS prints zero
我正在使用convexSweepTest方法在Swift中寻找一个工作用例示例。
答案 0 :(得分:0)
您不能自己创建 SCNPhysicsWorld,而是使用当前场景 (scene.physicsWorld) 中的那个。