在unity中相机很多时候是自动跟随玩家移动和旋转的。
我们想要实现该功能是有很多方法的,最简单的就是:
? ? ? 直接将相机挂载到角色上。
? ? ? 这样会导致很多局限性比如:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? A:你看到的是瞬移,而不是旋转过去。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? B:你看到的是地面和场景旋转,而不是人旋转。
这是不符合现实情况的。我们一般游戏里面旋转是。玩家快速发生旋转,操作,而相机则是圆滑的有一定时间的旋转到固定位置,最终保持和玩家不变。
那么我们明白了需求之后要怎么做呢?
首先我们肯定是要记录相机和角色的偏移的。
mainCamera = GameObject.Find("Main Camera");
player = GameObject.Find("Player");
offset = -player.transform.position + mainCamera.transform.position;
quaternion = new Quaternion();
记录偏移之后是按照偏移和角色的旋转位置进行计算出他的目标位置并进行跟随:
mainCamera.transform.rotation =
Quaternion.Lerp(mainCamera.transform.rotation,
player.transform.rotation, 1.0f/LerpCount);
mainCamera.transform.position =
player.transform.position +
mainCamera.transform.rotation*offset;
? ? ? ? ? ?更具如此既可以跟随角色移动又可以圆滑的进行旋转,且不会出现只使用起点终点导致的相机先靠近角色在远离角色的情况。
|