作为我游戏的一部分,我希望用户能够围绕角色旋转相机。想象一下,角色位于半径为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
}