1. 程式人生 > >Unity 視角 第一人稱指令碼 MouseLook

Unity 視角 第一人稱指令碼 MouseLook

寫在前面:

研究了一下 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。

總結:視角的控制,其實很簡單。主要是控制:旋轉、以及輸入裝置的增量(比如,滑鼠移動的快,視角轉動的也要快)。