1. 第一种方法
摄像机视角锁死方法,具体做法就是事先调试好视角,然后聚焦,然后用代码事先固定视角,其代码如下:
/ 挂载对象:主相机 // 功能:相机跟随人物 // 注意:相机只能跟随人物移动,但是如果人物转向或者做某些动作,摄像机并不跟随 using UnityEngine; using System.Collections; public class CameraShareScript : MonoBehaviour { //摄像机于要跟随物体的距离 Vector3 Dir; //要跟随的物体 public GameObject m_Player; // Use this for initialization void Start () { //获取到摄像机于要跟随物体之间的距离 Dir = m_Player.transform.position - transform.position; } // Update is called once per frame void LateUpdate () { //摄像机的位置 transform.position = m_Player.transform.position - Dir; } }
优点:代码简单,但是不能跟随人物旋转,运动。
2. 第二种方法:
这种方法是上种方法的优化,可以实现跟随人物移动,跟随人物旋转等基本功能,但是缺点是如果添加刚体组件,摄像机无法穿墙跟随人物,其代码如下:
// 挂载对象:主相机 // 功能:把要跟随的人物Tag修改为Player // 注意: using UnityEngine; using System.Collections; public class CameraFindPlayerScript : MonoBehaviour { //相机距离人物高度 float m_Height = 5f; //相机距离人物距离 float m_Distance = 5f; //相机跟随速度 float m_Speed = 4f; //目标位置 Vector3 m_TargetPosition; //要跟随的人物 Transform follow; // Use this for initialization void Start () { // 通过Tag得到这个要跟随的人物 follow = GameObject.FindWithTag ("Player").transform; } // Update is called once per frame //相机平滑的跟随人物移动 void LateUpdate () { //得到这个目标位置 m_TargetPosition = follow.position + Vector3.up * m_Height - follow.forward * m_Distance; //相机位置 transform.position = Vector3.Lerp (transform.position, m_TargetPosition, m_Speed * Time.deltaTime); //相机时刻看着人物 transform.LookAt (follow); } }
基本实现相机时刻跟随人物移动,方便快捷。
3. 第三种方法
第三种方法:射线检测,保证不论主角在哪摄像机永远可以看到主角,并且把摄像机的y轴和z轴锁死,使玩家视野不晕
版权声明:本文为CSDN博主「灬空灬」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44467619/article/details/86164747