Unity 視角 第一人稱指令碼 MouseLook
阿新 • • 發佈:2019-01-07
寫在前面:
研究了一下 unity 的第一人稱控制器後,把他自帶的 Mouse Look 指令碼做了簡化。這樣程式碼看上去更簡單明瞭。記錄下來,以備以後再用到。所以,這是一個沒啥營養的文。
第一人稱視角實驗:
1,搭建一個實驗場景:1個攝像機,1個平面,1個正方體(作為參照物),1個膠囊體(作為主角),1個點光源。
2,把攝像機放到膠囊體上,擺好高度(相當於第一人稱的眼睛),如下圖:
3,新建一個指令碼,作為相機的控制指令碼(其實這個指令碼就是Mouse Look.cs 指令碼,做了刪減)。指令碼如下:
using UnityEngine; using System.Collections; public class FirstView : MonoBehaviour { //方向靈敏度 public float sensitivityX = 10F; public float sensitivityY = 10F; //上下最大視角(Y視角) public float minimumY = -60F; public float maximumY = 60F; float rotationY = 0F; void Update () { //根據滑鼠移動的快慢(增量), 獲得相機左右旋轉的角度(處理X) float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; //根據滑鼠移動的快慢(增量), 獲得相機上下旋轉的角度(處理Y) rotationY += Input.GetAxis("Mouse Y") * sensitivityY; //角度限制. rotationY小於min,返回min. 大於max,返回max. 否則返回value rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); //總體設定一下相機角度 transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0); } void Start () { // Make the rigid body not change rotation if (rigidbody) rigidbody.freezeRotation = true; } }
4,把這個指令碼放到相機上。ok。
總結:視角的控制,其實很簡單。主要是控制:旋轉、以及輸入裝置的增量(比如,滑鼠移動的快,視角轉動的也要快)。