Unity 攝影機跟隨 Lerp

Lerp(position A, position B, 切割等份);
會維持A-B的切割等份進行位置分配

理解Lerp 就很好理解這段了
Lerp公式為 a + (b-a) *t 回傳值是Vector3
因此
forward 是改變Z軸 0 0 1的部分 dist給越高 距離目標物的Z軸差距越大
up則是改變Y軸 0 1 0的部分 height越大 離目標的Y軸越遠

最後的float 我測了一下給什麼好像都沒太大的差別 給越大移動越平滑
但是照理來說他應該離target越來越近 我也不知道為何不會越來越近


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

public class Camera : MonoBehaviour
{
    public Transform targetTr;
    public float dist = 10f;
    public float height = 3.0f;
    public float dampTrace = 20.0f;

    public Transform tr;
    // Start is called before the first frame update
    void Start()
    {
        tr = GetComponent<Transform>();
        /*
        print(targetTr.forward * dist); //0 0 1
        print(Vector3.up * height); //0 1 0
        print(Time.deltaTime); //0.02
        */
     }
    // Update is called once per frame
    void Update()
    {
        tr.position = Vector3.Lerp(tr.position, targetTr.position - (targetTr.forward * dist) + (Vector3.up * height), 1);
        print(tr.position);
        tr.LookAt(targetTr.position);

     
    }
}

camera.position = Vector3.Lerp(camera.position, traget - (Vector3.forward * 10), Time.deltaTime * speed); 最重要的應該就是這條 有這條就能讓攝影機跟著

LookAt()只是讓攝影機對著目標方向而已

留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

javascript 更改屬性及創建標籤