SceneKit - 制作自定义物理主体

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

所以我设计了一个走廊,我希望我的玩家可以走过,但我似乎无法让物理机构为它工作。无论是玩家走过墙壁还是他都不能走在走廊上,因为它将物体视为一个巨大的立方体。如何让物理体绕过物体。

let chessPieces = SCNScene(named: "art.scnassets/hallway.dae")

if let knight2 = chessPieces?.rootNode.childNodeWithName("Room", recursively: true) {

    knight2.position = SCNVector3Make(150, 30, 0)
    knight2.scale = SCNVector3Make(knight2.scale.x * 200, knight2.scale.y * 200, knight2.scale.z * 200)            
    var nodeScale = NSValue(SCNVector3:SCNVector3Make(200, 200, 200));
    var nodeGeometry = knight2.geometry;
    var shape = SCNPhysicsShape(geometry: nodeGeometry!, options: [SCNPhysicsShapeScaleKey:nodeScale])
    knight2.physicsBody = SCNPhysicsBody(type:SCNPhysicsBodyType.Static, shape: shape)            
    knight2.physicsBody?.categoryBitMask = rockCategory

    knight2.physicsBody?.angularVelocityFactor = SCNVector3Make(0.0,0.0,0.0)
    knight2.physicsBody?.collisionBitMask = 3
    knight2.name = "Student"          
    knight2.physicsBody?.mass = 1000
    scene?.rootNode.addChildNode(knight2)
}
swift collision-detection game-physics scenekit scnnode
1个回答
0
投票

SceneKit物理实体模拟实体形状。如果你试图模拟一个被边界包围的开放空间 - 比如一个房间或走廊 - 一个物理团体将无法帮助你。这将填满房间的一个无法通行的区域的体积,其他物理机构(具有重叠的防撞罩)将被迫离开该区域。

如果要创建由边界包围的开放空间,则需要为边界创建物理实体。 SceneKitVehicle示例代码说明了这一点,使用SCNFloorSCNBox几何形状为房间的地板和墙壁创建单独的物理主体。

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