Unity3D中摄像机跟随方法

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

推荐阅读