我的代碼不工作,我想夾住相機,但它不工作。它瞬間飆升到45。我怎樣夾緊相機?鉗RotateAround不工作的攝像頭在Unity3D
這是我的代碼。
using UnityEngine;
using System.Collections;
public class MoveCamera : MonoBehaviour
{
public float sensitivity = 4.0f;
private Vector3 mouseOrigin;
private bool isRotating;
private float minX = -45.0f;
private float maxX = 45.0f;
private float minY = -10.0f;
private float maxY = 10.0f;
float rotationY = 0.0f;
float rotationX = 0.0f;
void Start()
{
}
void Update()
{
if (Input.GetMouseButtonDown (0)) {
mouseOrigin = Input.mousePosition;
isRotating = true;
}
if (!Input.GetMouseButton (0))
isRotating = false;
if (isRotating) {
Vector3 pos = Camera.main.ScreenToViewportPoint (Input.mousePosition - mouseOrigin);
transform.RotateAround (transform.position, transform.right, -pos.y * sensitivity);
transform.RotateAround (transform.position, Vector3.up, pos.x * sensitivity);
rotationY = Mathf.Clamp (transform.localEulerAngles.y, minY, maxY);
rotationX = Mathf.Clamp (transform.localEulerAngles.x, minX, maxX);
transform.localEulerAngles = new Vector3 (-rotationY, rotationX, 0);
}
}
}
transform.RotateAround實際上會旋轉變換,所以每次更新都要旋轉,然後再使用transform.localEulerAngles旋轉。你想要相機做什麼? – Absinthe
我想要相機將Y軸固定到10和-10,X軸固定到45和-45 –
如果我刪除最後3行,它的旋轉完美,因爲我想要的。但我想鉗,所以我添加了最後3行,但它沒有夾緊。 –