unity 摄像机跟随物体 第一人称跟随

来源:互联网 发布:阿里云代金券如何使用 编辑:程序博客网 时间:2024/05/18 03:59

摄像机跟随物体的实现方式很多,也都是现成的代码可以直接拿过来用,但是项目中难免围绕这个功能做扩充,所以简单了解下实现原理还是有必要的, 这边简要介绍两种实现方式:以第一人称视角跟随角色。

        第一种方式,比较简单:

void cameraFollowFunc_1(){                //先改变坐标//先设置目标坐标Vector3 targetPosition = player.position + Vector3.up*_cameraDefaultHeight - player.forward*_cameraDistance;_camera.position = Vector3.Lerp(_camera.position,targetPosition,Time.deltaTime*4.0f);//改变方向                //始终观察角色_camera.LookAt(player);}
注意:player.forward默认角色z轴为摄像机前方,否则调整这个参数


第二种方式,稍微麻烦:

void cameraFollowFunc_2(){//摄像机距离差值float cameraDistance = Mathf.Lerp(30,35,Time.deltaTime*1.5f);//设置摄像机的方向//角色y轴偏移为摄像机偏移float cameraDir = Mathf.Lerp(0,plyer.localEulerAngles.y,Time.deltaTime4.0f);//设置摄像机偏移camera.localEulerAngles = new Vector3(0,cameraDir,0);//开始计算坐标//以角色为起点,计算角色背后坐标偏移量(y轴不变)Vector3 direction = rotateAlongY(new Vector3(0,0,-1),player.localEulerAngles.y);//设置坐标camera.position = new Vector3(player.position.x + direction.x*cameraDistance,Mathf.Lerp(camera.position.y,player.position.y+20,Time.deltaTime*70),Mathf.Lerp(camera.position.z,player.position.z+direction.z*cameraDistance,Time.deltaTime*50));}/// <summary>/// 计算相对于角色的坐标偏移向量/// </summary>/// <param name="v3">V3.</param>/// <param name="rotationDeg">Rotation deg.</param>void rotateAlongY(Vector3 v3,float rotationDeg){//生成零向量Vector3 finalVector = Vector3.zero;//转化成弧度float Red = rotationDag * Mathf.Deg2Rad;finalVector.z = Mathf.Cos(-rad)*v3.z;finalVector.x = Mathf.Sin(-rad)*v3.z;return finalVector;}

原创粉丝点击