腳本如下:
using UnityEngine; using System.Collections; public class BetterLookAt : MonoBehaviour { // Use this for initialization void Start () { } float rotationy = 0F; // Update is called once per frame void Update () { float rotationx = transform.localEulerAngles.y + Input.GetAxis ("Mouse X") * 15F;//15 F = sensitivity rotationy += Input.GetAxis("Mouse Y") * 15F; rotationy = Mathf.Clamp(rotationy,-60,60); transform.localEulerAngles = new Vector3(-rotationy,rotationx,0); } }
設計方法
Tag 1: 移動攝影機x軸 ->
目前Y軸的方向 (transform.localEulerAngles.y) + 新的地增值,取得滑鼠的Mouse X(1 ~ -1)(Input.GetAxis("Mouse X")) * 靈敏度f //取得y軸是為了能夠呈現自由斜線視角
Tag 2: 移動攝影機y軸 ->
預設rotation y是個0f,之後與Input.GetAxis("Mouse Y")相加在乘與靈敏度f
Tag 3: 限定rotation y 的值,否則會有無法預期的錯誤 ->
Mathf.Clamp是一個可以限定max,main值的函數, 傳入的值為 (被限定的值,最大值,最小值),被限定的值會受到最大值或最小值改變,其需要設定最大值是 -60 ~ +60
Tag 4: 傳送指定的值到視角的攝影機 localEulerAngles = new Vector3(-y,x,0); y為顛倒值
參考:
MSDN Mathf.Clamp: http://msdn.microsoft.com/zh-tw/library/hh308289.aspx
Unity API GetAxis: http://docs.unity3d.com/ScriptReference/Input.GetAxis.html
Unity API Mathf.Clamp: http://docs.unity3d.com/ScriptReference/Mathf.Clamp.html
沒有留言:
張貼留言