2016-07-29 11 views
0

Hey以下私は自分のゲームシーン/世界に物理があるかどうかをテストするために作成した通常の球を持っています。だから、私は単にボールをシーン/世界に置くだけで完璧です。それは重力の影響を受けます。だから私は.scnファイルにまったく同じことをしようとします。私は重力に落ちる試験球と同じ物理学を与えます。男は動かない。重力は、通常の重力 コードをシミュレートするために-9.8に設定されている:男性下記SceneKitの.scnオブジェクトにシンプルフィジックスを適用するXCODE SWIFT

//----Test-Circle-here-------------------- 

    var sphere1: SCNNode! 
    let sphereGeometry = SCNSphere(radius: 10.5) 
    let sphereMaterial = SCNMaterial() 
    let collisionCapsuleRadius = CGFloat(0.4 - 0.4) * 0.4 
    let collisionCapsuleHeight = CGFloat(0.4 - 0.4) 
    sphereMaterial.diffuse.contents = UIColor.greenColor() 
    sphereGeometry.materials = [sphereMaterial] 
    sphere1 = SCNNode(geometry: sphereGeometry) 
    sphere1.position = SCNVector3(x: 1.0, y: 0.05, z: 0.05) 

    //----Giving it a physics--------- 

    sphere1.physicsBody?.affectedByGravity = true 
    sphere1.physicsBody?.friction = 0 
    sphere1.physicsBody?.restitution = 1 //bounceness of the object 
    sphere1.physicsBody?.angularDamping = 1 // rotationess 
    sphere1.physicsBody = SCNPhysicsBody(type: .Dynamic, shape:SCNPhysicsShape(geometry: SCNCapsule(capRadius: collisionCapsuleRadius, height: collisionCapsuleHeight), options:nil)) 
    scnView.scene!.rootNode.addChildNode(sphere1) 

をどんないくつかの方法を

 class Character { 

let node = SCNNode() 
init() { 

    let GuyScene = SCNScene(named: "art.scnassets/FoxMan2.scn") 
    let characterTopLevelNode: SCNNode = GuyScene!.rootNode.childNodeWithName("Guy", recursively: true)! 
    let collisionCapsuleRadius = CGFloat(0.4 - 0.4) * 0.4 
    let collisionCapsuleHeight = CGFloat(0.4 - 0.4) 
    characterTopLevelNode.position = SCNVector3(x: 10.0, y: 0.0, z: 0.0) 

    //----Giveing it a physics--------- 

    characterTopLevelNode.physicsBody?.affectedByGravity = true 
    characterTopLevelNode.physicsBody?.friction = 0 
    characterTopLevelNode.physicsBody?.restitution = 1 //bounceness of the object 
    characterTopLevelNode.physicsBody?.angularDamping = 1 // rotationess 
    characterTopLevelNode.physicsBody = SCNPhysicsBody(type: .Dynamic, shape:SCNPhysicsShape(geometry: SCNCapsule(capRadius: collisionCapsuleRadius, height: collisionCapsuleHeight), options:nil)) 
    node.addChildNode(characterTopLevelNode) 

} 
} 

enter image description here

enter image description here

答えて

1
same-スポットに留まりません

characterTopLevelNodeが実際にあなたが思っているノードであることを確認してください(名前の不一致はかなり一般的です)。これは、この種の状況ではしばしば問題になります。 nodeの子としてcharacterTopLevelNodeを追加しているようですが、表示されるシーンの子としてnodeを追加することは決してありません。

もう1つのことは、フィジックスボディを作成する前にフィジックスボディのオプションを設定しないでください。

例: sphere1.physicsBody = SCNPhysicsBody(type: .Dynamic, ... sphere1.physicsBody.affectedByGravity = true sphere1.physicsBody.friction = 0 sphere1.physicsBody.restitution = 1 sphere1.physicsBody.angularDamping = 1

関連する問題