unity Camera控制(上帝视角)

unity Camera控制(上帝视角)

解决问题

  1. 解决移动速度不变带来的操作迟缓;
  2. 实现在摄像机不同角度下,始终针对地面的水平移动(而非视口的上下左右移动);
  3. 实现绕点旋转。

正文

在针对大场景(如智慧城市),需要一种行之有效的Camera控制移动方法。为了提高漫游的效率,Camera的移动速度不应该是不变的。在实际的操作过程中,水平的鸟瞰移动,比视口发上下移动更为快捷。针对某地某建筑绕点旋转比自身旋转观测更具效率。

  1. 动态改变速度

这里引入了射线的,在特定时间用射线和地面或建筑发生碰撞,得到碰撞点,通过计算距离,调整移动速度。

  1. 始终水平地面移动

解决问题要得到一个始终平行于地面的“移动向量”。首先,我们定义Input.GetAxis(“Mouse X”)和Input.GetAxis(“Mouse Y”)为Camera的“移动增量”。unity Camera的x轴是水平地面的,可以用“X移动增量”作为“移动向量的X分量”。y,z两轴是根据图中a角度改变而改变,当控制Camera向前移动时,使用Camera的x欧拉角(如图a角)和Y移动增量,分别用sin和cos计算出“移动向量”的Y、Z分量。这样所构成的向量始终平行于地面。

unity Camera控制(上帝视角)_第1张图片

你可能感兴趣的:(Unity,unity,游戏引擎,几何学)