【发布时间】:2017-06-04 20:58:15
【问题描述】:
所以。我正在尝试在 SceneKit 中创建一个 SCNPhysicsVehicle。我遇到的问题是车辆底盘确实与场景中的地板发生碰撞,尽管车轮没有。车轮直接穿过地板,直到底盘与地板相撞。我想知道是否有什么我忘记了?我从未见过其他人为 SCNPhysicsVehicle 上的车轮设置碰撞类别或类别位掩码。话虽如此,我什至尝试过,但没有运气!
非常感谢提前。
let carScene = SCNScene(named: "art.scnassets/Textures/rc_car.dae") //rc_car.dae
let chassisNode = carScene!.rootNode.childNode(withName: "rccarBody", recursively: true)!
chassisNode.position = SCNVector3Make(0, 10, -30)
let body = SCNPhysicsBody.dynamic()
body.allowsResting = false
body.mass = 80
body.restitution = 0.1
body.friction = 0.5
body.rollingFriction = 0
chassisNode.physicsBody = body
scene.rootNode.addChildNode(chassisNode)
let wheelnode0 = chassisNode
.childNode(withName: "wheelLocator_FL", recursively: true)!
let wheelnode1 = chassisNode
.childNode(withName: "wheelLocator_FR", recursively: true)!
let wheelnode2 = chassisNode
.childNode(withName: "wheelLocator_RL", recursively: true)!
let wheelnode3 = chassisNode
.childNode(withName: "wheelLocator_RR", recursively: true)!
let wheel0 = SCNPhysicsVehicleWheel(node: wheelnode0)
let wheel1 = SCNPhysicsVehicleWheel(node: wheelnode1)
let wheel2 = SCNPhysicsVehicleWheel(node: wheelnode2)
let wheel3 = SCNPhysicsVehicleWheel(node: wheelnode3)
vehicle = SCNPhysicsVehicle(chassisBody: chassisNode.physicsBody!,
wheels: [wheel0, wheel1, wheel2, wheel3])
chassisNode.physicsBody?.collisionBitMask = USBitMaskManager.boundary | USBitMaskManager.sphere
chassisNode.physicsBody?.categoryBitMask = USBitMaskManager.sphere
// scene.physicsWorld.addBehavior(vehicle)
return vehicle
【问题讨论】:
-
当然。我的代码几乎一模一样!
-
您可能是很长时间以来第一个使用此示例的人。而且看起来 Apple 甚至没有对 SceneKit 的每个迭代进行基本测试......所以它很可能会被破坏。
-
你能解决这个问题吗