2015-02-18 3 views
0

Итак, я разработал коридор, в котором хочу, чтобы мой игрок прошел, но я могу получить физическое тело, чтобы работать на него. Либо игрок идет по стенам, либо не может идти по коридору, потому что видит объект как гигантский куб. Как заставить тело физики обходить объект.Создание пользовательского физического тела

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) 
    } 

ответ

0

Физические тела SceneKit модели твердых форм. Если вы пытаетесь моделировать пространство, ограниченное границами - как в комнате, так и в коридоре, вам не поможет ни один физический организм. Это заполнило бы объем комнаты непроходимой областью, и другие физические тела (с перекрывающимися масками столкновения) были бы вынуждены покинуть эту область.

Если вы хотите создать свободное пространство, заключенное в границы, вам необходимо создать физические тела для границ. Пример кода SceneKitVehicle иллюстрирует это, создавая отдельные физические тела для пола и стен комнаты с использованием геометрических точек SCNFloor и SCNBox.

Смежные вопросы