第三人称相机定位

时间:2015-02-05 02:41:32

标签: camera scenekit euler-angles

作为我游戏的一部分,我希望用户能够围绕角色旋转相机。想象一下,角色位于半径为r的球体的中心,相机位于球体表面的某个位置,因此它总是聚焦在角色上,角色直立。

我试图使用波纹管代码来实现上述内容,但它并没有为任何给定的eulerAngle生成正确的结果

func cameraHandle_orientOnNode(camera: SCNNode, target: SCNNode, eulerAngles: SCNVector3, arcLength: Float) {
    let targetPos = target.presentationNode().position
    let theta = Float(eulerAngles.x)
    let phi = Float(eulerAngles.z)
    let x = CGFloat(arcLength * sin(phi) * cos(theta)) + targetPos.x
    let y = CGFloat(arcLength * sin(phi) * sin(theta)) + targetPos.y
    let z = CGFloat(arcLength * cos(phi)) + targetPos.z
    let newPos = SCNVector3Make(x, y, z)
    camera.position = newPos
    camera.eulerAngles = eulerAngles
}

0 个答案:

没有答案