SceneKit SCNPhysics车辆问题

问题描述 投票:0回答:2

所以。我正在尝试在 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
scenekit scnnode
2个回答
0
投票

你检查github了吗?有几个关于 Apples Vehicle Demo 的项目......例如一个在这里:https://github.com/ooper-shlab/SceneKitVehicle1.0-Swift


0
投票

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

否则不行。

© www.soinside.com 2019 - 2024. All rights reserved.