摄像机跟踪

191 阅读1分钟

在Main Camera下面挂载脚本CameraFollow

拿到跟随物体

  • 定义targetif (target==null && GameObject.FindGameObjectWithTag("Player")!=null) Update方法中拿到并判断物体为空在根据标签查找到玩家

  • Mathf.SmoothDamp平滑阻尼

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraFollow : MonoBehaviour
{
    private Transform target;
    private Vector3 offset;//偏移量
    private Vector2 velocity;

    private void Update()
    {
        if (target==null && GameObject.FindGameObjectWithTag("Player")!=null)
        {
            target = GameObject.FindGameObjectWithTag("Player").transform;//位置
            offset = target.position - transform.position;//偏移量
        }
    }
    private void FixedUpdate()
    {
        if (target != null)
        {
            //Mathf.SmoothDamp平滑阻尼,游戏中用于做相机的缓冲跟踪和boss直升机跟踪士兵。该函数是Unity3D中Mathf数学运算函数中的一个。
            //平滑缓冲,东西不是僵硬的移动而是做减速缓冲运动到指定位置
            float posX = Mathf.SmoothDamp(transform.position.x,
                target.position.x - offset.x,
                ref velocity.x,
                0.05f);
            float posY = Mathf.SmoothDamp(transform.position.y,
               target.position.y - offset.y,
               ref velocity.y,
               0.05f);

            //解决摄像机抖动
            if (posY>transform.position.y)
            {
                transform.position = new Vector3(posX,posY,transform.position.z);
            }
        }
    }
}