Unity小遊戲——移動的小船船(攝影機跟隨船體移動)

關鍵功能:

  1. 攝影機跟隨船體移動
  2. 船體在水面上晃動
  3. 搖桿控制方向

攝影機跟隨對象的原理:

每一幀的開始的時候,都先去把這個攝影機移動到和對象相同的位置,然後收集跟隨對象旋轉的角度,然後將攝影家挪到對象的後面,在想上挪動一段距離,這個時候,攝影機就到了對象後面靠上,並一直跟着對象。

using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
  
public class CameraFollow : MonoBehaviour  
{  
// 這個是我們跟隨的對象
    public new GameObject gameObject;  
  
    // Start is called before the first frame update  
    void Start()  
    {  
          
    }  
  
    // Update is called once per frame  
    void Update()  
    {  
        if(gameObject == null)  
        {  
            return;  
        }  
  	// 將攝影機的位置挪到我們跟隨對象的位置
        this.transform.position = gameObject.transform.position;  
  	// 然後我們將攝影機此時的位置取出來,便於我們操作
        Vector3 CameraPosition = this.transform.position;  
// 取出來四元數,這個四元數是由我們跟隨的物體在繞着Y軸旋轉的角度對應的歐拉角
        Quaternion rotation = Quaternion.Euler(0,gameObject.transform.eulerAngles.y,0);  
// 然後我們將攝影機向後移動四個單位,然後在乘以這個四元數,此時就是向後平移和旋轉的操作都進行之後的結果,這個結果代表移動之後的攝影機的座標。
        CameraPosition += rotation * Vector3.back * 4;  
// 攝影機向上移動一個單位
        CameraPosition.y += Vector3.up.z;  
// 將我們更改之後的座標給攝影機,讓攝影機直接複製過去
        this.transform.position = CameraPosition;  
  	// 讓我們的攝影機看着我們跟隨的物體
        this.transform.LookAt(gameObject.transform);  
    }  
}  

Github:https://github.com/YuDang1024/UnityGames/tree/master/MovingBoat

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章