2017-04-03 1 views
2

私は私のプレイヤーの主な物理体としてボールを使用しています:SceneKit後カメラ

は、次の私のプレーヤーにカメラの位置を固定するためのコードを書いた

setup_Player() { 

    playerGeometry = SCNSphere(radius: CGFloat(radius)) 
    playerGeometry.segmentCount = 64 

    player = SCNNode(geometry: playerGeometry) 
    player.geometry?.materials = [playerMaterial]; 
    player.position = SCNVector3(x: 1, y: 15, z: 0.5) 

    let playerShape = SCNPhysicsShape(geometry: playerGeometry, options: nil) 
    let playerBody = SCNPhysicsBody(type: .dynamic, shape: playerShape) 

    player.physicsBody?.categoryBitMask = collisionRollingBall 
    player.physicsBody?.collisionBitMask = collsionTarget 
    player.physicsBody?.mass = 10 
    player.physicsBody = playerBody 

    scene.rootNode.addChildNode(player) 

    } 

func setupCamera() { 

    //create a main camera 
    cameraNode = SCNNode() 
    cameraNode.camera = SCNCamera() 
    cameraNode.camera?.zFar = 100; 
    cameraNode.position = SCNVector3Make(0, 0, 0) 
    cameraNode.eulerAngles = SCNVector3Make(0, 0, 0) 
    cameraNode.rotation = SCNVector4Make(0, 1, 0, Float(-M_PI_4*0.75)) 
    scene.rootNode.addChildNode(cameraNode) 

    //add a secondary camera to the player 
    let frontCameraNode = SCNNode() 
    frontCameraNode.position = SCNVector3Make(0, 15, 0) 
    frontCameraNode.rotation = SCNVector4Make(1, 0, 0, Float(-M_PI_4*2.2)) 

    frontCameraNode.camera = SCNCamera() 
    frontCameraNode.camera?.zFar = 100 

    player.addChildNode(frontCameraNode) 

} 

私はちょうどに必要3人目のゲームのように一定の距離でカメラの位置を固定します。

このようなシナリオでは、カメラはボールの物理的特性を取得して回転します。しかし、私はプレーヤーとすべてのボールを巨大なスピードで回転しないでください。

プロパティを継承しないで、カメラをプレーヤーの隣に固定するにはどうすればいいですか?どのように物理的な体の回転を無視する任意のアイデアですか?

ありがとうございます。

答えて

0

カメラの位置を更新し、シーンに追加するだけで、プレーヤーに追加することはできません。あなたは、私はそこにカメラなどの回転のように行われることがよりが必要しかし、おそらく正しい方向にあなたを指していると思いrenderer(_:​update​At​Time:​)

https://developer.apple.com/reference/scenekit/scnscenerendererdelegate/1522937-renderer

frontCamerNode.position = SCNVector3(x: player.position.x, player.position.y, player.position.z - 10) 

にこのフレームごとに行う必要があります。