1. 程式人生 > >[Unity基礎]鏡頭管理類

[Unity基礎]鏡頭管理類

cal oid PE form color 進行 有時 date DPoS

一個遊戲中可能會有各種類型的鏡頭,例如有時候是第一人稱,有時是第三人稱,有時又會給個特寫等等,因此可以定義一個鏡頭類型枚舉,在不同的場合進行切換,管理起來很方便。

CameraManager.cs

 1 using UnityEngine;
 2 using System.Collections;
 3 
 4 //鏡頭類型
 5 public enum CameraType
 6 {
 7     NotFollow,        //不跟隨(可以自由設置鏡頭)
 8     FixedFollow,      //固定跟隨
 9     SmoothFollow,     //平滑跟隨
10 }
11
12 public class CameraManager : MonoSingletion<CameraManager> { 13 14 private Camera camera; 15 private Transform cameraTra; 16 private Transform targetTra; 17 private CameraType cameraType; 18 19 //固定跟隨參數 20 private Vector3 fixedPosOffset;//位置偏移 21 22 //設置鏡頭 23 public
void SetCamera(Camera camera) 24 { 25 this.camera = camera; 26 cameraTra = camera.gameObject.transform; 27 } 28 29 //設置目標 30 public void SetTarget(GameObject go) 31 { 32 targetTra = go.transform; 33 } 34 35 private void LateUpdate() 36 { 37 if
((cameraTra == null) || (targetTra == null)) 38 { 39 return; 40 } 41 42 switch (cameraType) 43 { 44 case CameraType.NotFollow: 45 return; 46 case CameraType.FixedFollow: 47 FixedFollow(); 48 break; 49 case CameraType.SmoothFollow: 50 break; 51 default: 52 break; 53 } 54 } 55 56 //-----------------------------------------------不跟隨 start 57 public void SetNotFollow() 58 { 59 cameraType = CameraType.NotFollow; 60 } 61 //-----------------------------------------------不跟隨 end 62 63 //-----------------------------------------------固定跟隨 start 64 public void SetFixedFollow(Vector3 fixedPosOffset, Vector3 rot) 65 { 66 cameraType = CameraType.FixedFollow; 67 this.fixedPosOffset = fixedPosOffset; 68 cameraTra.localEulerAngles = rot; 69 } 70 71 private void FixedFollow() 72 { 73 cameraTra.position = targetTra.position + fixedPosOffset; 74 } 75 //-----------------------------------------------固定跟隨 end 76 }

[Unity基礎]鏡頭管理類