SceneKit SCNPhysicsVehicle问题

3
所以,我正在尝试在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

你看过苹果的示例代码了吗?https://developer.apple.com/library/content/samplecode/SceneKitVehicle/Introduction/Intro.html - Nico S.
1
当然。我的代码几乎完全相同! - Sam Si Tayeb
你可能是很长一段时间内第一个使用这个示例的人。而且看起来苹果甚至没有对每个SceneKit迭代进行基本测试...所以它很可能是有问题的。 - Confused
你能解决这个问题吗? - slimboy
2个回答

0

0

.dae 模型,从中加载底盘的话,需要将 4 个轮子作为其子节点。

否则它就无法正常工作。

值得注意的是,您不能对轮子进行缩放。轮子默认使用在 1.0 缩放的节点。

因此,当按比例缩放到 1.0 时,.dae 模型必须是正确的尺寸。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接