SceneKit - 无法使3D对象成为静态形状

时间:2016-06-17 18:26:38

标签: swift 3d scenekit physics

我已经在这里发布了我的问题,但我没有得到任何满意的答案,可能是问题不清楚,因此我再次发布我的问题。

  1. 我在blender中创建了一个3D隧道并将其导入到sceneKit项目中
  2. 在我的场景中,我放置了一个在这个隧道中运行的玩家角色,并且很好。玩家可以使用带有用户触摸功能的相机运行,就像在太空游戏中一样。

    playerNode.addChildNode(cameraNode)
    
  3. 当玩家跑步时,它穿过隧道,因为隧道是一个柔软的身体形状几何体并且没有应用物理学

  4. 我将物理体类型设为静态,将物理体形状设为凸壳,但不起作用,我也检查使其成为凹体,但问题是相同的,玩家遇到隧道的墙壁。这是我的代码

    scene = SCNScene(named: "game.scnassets/UpdatedTunnel/second.dae")!
    let Tunnel = scene.rootNode.childNodeWithName("SketchUp", recursively: true)!
    TunnelNode.addChildNode(Tunnel)
    var shape:SCNPhysicsShape?
    
    if let geometry = TunnelNode.geometry {
        shape = SCNPhysicsShape(geometry: geometry, options: [SCNPhysicsShapeTypeKey: SCNPhysicsShapeTypeConvexHull])
        var nodePhysicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.Static, shape: shape)
        TunnelNode.physicsBody = nodePhysicsBody
    }
    
  5. 我尝试不同的形状类型让身体变得坚固,但对我来说没什么用,我觉得我的3D .dae隧道可能出了问题,所以为了检查我在场景中创建了一个平面并使其成为静态体型但是它也给我的玩家穿过这架飞机也犯了同样的错误。

    let plane = SCNPlane(width:20.0,height:15.0)
    var planeNode = SCNNode(geometry: plane)
    planeNode.position = SCNVector3(4.0,0.0,-5.0)
    planeNode.physicsBody = SCNPhysicsBody.staticBody()
    
    planeNode.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.Static,
                                          shape: SCNPhysicsShape(geometry: plane, options: nil))
    
  6. 我很多时候都被困在这一点上请有人帮助我,我的代码错误在哪里以及如何让我的隧道墙坚固,以便玩家在撞到墙壁时应该反弹。 以下是此链接中的图片,您可以看到This is my tunnel

0 个答案:

没有答案