HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何确定ScnNode是在SceneKit中的摄像机节点的视图方向的左侧还是右侧大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在SceneKit场景的中心位置(0,0)有一个摄像头
我围绕y轴旋转相机以显示场景的不同部分.

我想在屏幕的左/右侧显示箭头,以显示用户移动以查看目标对象的方向.

如何计算ScnNode是否位于视图方向右侧的左侧?

ios – 如何确定ScnNode是在SceneKit中的摄像机节点的视图方向的左侧还是右侧

我知道:

>摄像机节点的位置和旋转
>目标节点的位置

解决方法

>计算相对于摄像机的节点向量.通过从节点位置减去摄像机位置来计算矢量
>使用 atan2将矢量转换为角度. Apple的文档在解释上有点薄弱.有关于 raywenderlich.com的教程.

例如.

let v = CGPoint(x: nodePosition.x - cameraPosition.x,y: nodePosition.y - cameraPosition.y);
let a = atan2(v.y,v.X) // Note: order of arguments

角度以弧度为单位,范围介于-π和π(-180到180度)之间.如果值为负,则节点位于摄像机矢量的左侧,正值表示节点位于右侧,零值表示节点位于正前方.

便的是,您可以根据需要使用此角度实际执行旋转.只需将摄像机角度增加一定角度即可达到节点.

例如.

cameraRotation += a * 0.1

注意事项:

>“前进”或“上”不一定与内部坐标系相同.通常0在右侧,因此如果您想要显示箭头或其他UI,您可能需要从角度添加或减去一定量(通常 – (π/ 2)旋转四分之一圈).>角度始终只在-π和π之间.如果节点恰好落在摄像机后面(恰好是180度),您将得到-π或π,当节点越过这个不连续点时,您可能会看到这两个极端之间的角度跳跃.你有时会在游戏中看到这种副作用,导航箭头指向目标,然后突然轻弹到屏幕的另一侧.有各种方法来处理这个问题.一种简单的方法是在角度上使用低通滤波器(即随时间累积多个样本).

大佬总结

以上是大佬教程为你收集整理的ios – 如何确定ScnNode是在SceneKit中的摄像机节点的视图方向的左侧还是右侧全部内容,希望文章能够帮你解决ios – 如何确定ScnNode是在SceneKit中的摄像机节点的视图方向的左侧还是右侧所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。