Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 求法线与水平线的夹角_Unity3d - Fatal编程技术网

Unity3d 求法线与水平线的夹角

Unity3d 求法线与水平线的夹角,unity3d,Unity3d,在unity中,我想知道是否有一种方法可以计算相机/耳机与水平面的夹角 我是unity的新手(我13岁),所以请对我放松点 我试着这样计算角度: float zAngle = (float)Mathf.Asin(headset.transform.forward.z); 我的逻辑是:如果耳机的前向向量是法向量,它的长度是1(因为它是单位向量) 角度=圆弧(z) 但当我将摄像头(连接到上面的headset变量)沿z轴旋转30度时,headset.transform.forward.z仍然是1(并

在unity中,我想知道是否有一种方法可以计算相机/耳机与水平面的夹角

我是unity的新手(我13岁),所以请对我放松点

我试着这样计算角度:

float zAngle = (float)Mathf.Asin(headset.transform.forward.z);
我的逻辑是:如果耳机的前向向量是法向量,它的长度是1(因为它是单位向量)

角度=圆弧(z)

但当我将摄像头(连接到上面的headset变量)沿z轴旋转30度时,headset.transform.forward.z仍然是1(并且应该小于1)


对吧??我做错了什么?

当你说“沿z轴旋转”时,你的意思是说你在绕z轴旋转吗?如果计算相机的前向向量与z轴的夹角,则绕z轴旋转不会改变该角度,因为前向向量保持不变。通过绕z轴旋转,你的头向左或向右倾斜,同时仍然向前看。所以你的前向向量不变,我明白了!我需要的是y分量,不是z!非常感谢。
sin(angle) =       zComponent of forward vector
             ----------------------------------------------
             hypoteneuse =1 (our unit vector normal length)