// Action to move node let action1 = SCNAction.moveto(SCNVector3(x: 4.0,y: 0.0,z: 6.0),duration: 3) // Get the tan angle: let angle = CGfloat(atan2(z,x)) if angle - prev@R_419_6928@sAngle > Pi { playerAngle += 2 * Pi } else if prev@R_419_6928@sAngle - angle > Pi { playerAngle -= 2 * Pi } prev@R_419_6928@sAngle = angle playerAngle = angle * RotationBlendFactor + playerAngle * (1 - RotationBlendFactor) let rot = playerAngle - 90 * degreesToradians flyNode.rotation = SCNVector4(x: 0,y: 1,z: 0,w: float(rot))
它适用于某些目标点,但不适用于所有目标点.
我也尝试添加约束数组SCNLookAtConstraint,它完美地旋转我的节点,但它停止我移动到动画:
let targerNode = SCNNode() targerNode.position = SCNVector3(x: -4.0,z: -2.0) let con = SCNLookAtConstraint(target: targerNode) flyNode.constraints = [con] let action1 = SCNAction.moveto(SCNVector3(x: 4.0,z: -2.0),duration: 3)
你能帮帮我解决这个问题吗?
解决方法 最简单的解决方案(尽管可能不是最优雅的)是将moveto SCNAction应用于节点,并将SCNLookAtConstraint应用于该节点的子节点.这应该使两者都可以无冲突地运作. 总结以上是内存溢出为你收集整理的ios – 将SCNNode旋转到面全部内容,希望文章能够帮你解决ios – 将SCNNode旋转到面所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)