Unity-镜头移动的相关逻辑
首先看需求:
如何创建数据库
面试经验
其实API等的都学过,一眼望下来感觉都会,写的时候就感觉很阻塞。还是熟练度的问题。
Unity小技巧
最难的就是第一个,用角度控制斜率,我还专门画图写公式。最后发现是自己想复杂了。不多说了,直接看思路。
python数据处理
Zuul
在完成第一个问题前,先看第三个问题。摄像机要看向人物头顶上的一个方位。
vuex
那么我们需要去得到这个方位。
入门教程
由于Vector3不能单独的改变x,y,z。因此我们在原本位置+Vector3.up*高度来得到,观测点位置。
测试工程师
qt5
监控
运行后可以看到nowPos点在(0,2,0)。
eclipse
现在观测的点找到了,那么我们要完成第一个问题,角度控制斜率。
方法
其他
从图中可以看到,摄像机到nowPos的夹角为,那么我们现在需要思考的就是,如何通过
Wi-Fi
来得到摄像机camera的position。
硬件架构
提示:(一)四元数乘以向量,几何意义为向量绕某一轴旋转度。
elasticsearch
(二)点 + 向量 ,几何意义为点以当前坐标系移动。
SIP协议
编辑器
看上图,我们是否可以将 -forward这个向量旋转度,来得到camera-target之间的向量。
flink
然后让nowPos进行位移,就找到了camera的position.
ios拍照旋转
要注意一点,我们使用四元数时:
省赛真题
mkswap
第二个参数为旋转的轴。此处的轴为target的x轴。
bsc
区块链
在这个问题中是绕x轴转的。
书籍
一个四元数乘以一个向量,得到的结果为该绕某轴旋转。
得到移动后的向量,但是注意,此时得到的是一个单位向量。如果我们想要摄像机与nowPos的距离可变的话,我们需要设置一个float变量dis来控制它。
下一步 就是移动nowPos得到摄像机的位置了。
进行测试:
完美,第一个问题顺利解决。
第二个问题,通过滚轮控制摄像机距离(有最大和最小限制)
关于这个变量,我们在上方就定义过了。dis变量,我们需要将它和鼠标滚轮联系起来。使用Input.GetAxis(“xx”)函数。该函数返回-1~1的值。
GetAxis内填的是Unity自定义的控制键的string。
如果不记得变量名,在Project Setting设置里可以找到。
限制最大最小值,mathf中有一个夹紧函数:
有三个参数,参数一<参数二时,返回参数二。参数一大于参数三时,返回参数三。其余返回参数一。叫夹紧函数!
试一试:
完美,再完成第三个问题,摄像机看向nowPos。关于解决这个问题,大部分时候会想到用LookAt函数。
但是LookAt,也不过是对四元数的一种封装,我们采用可控量更强的四元数写法。
第三点完成。第四点,用Vector3来实现摄像机跟随。老生常谈拉。
第五点 和第四点同理。
还有就是 摄像机有关的操作最好都在LateUpdate中执行。