【发布时间】:2016-10-04 12:16:02
【问题描述】:
我的代码不工作,我试图夹住相机,但它不工作。它立即捕捉到45。我怎样才能夹住相机?
这是我的代码。
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 再次旋转。你想让相机做什么?
-
我希望相机将 Y 轴夹在 10 和 -10,X 轴夹在 45 和 -45
-
如果我删除最后 3 行,它会按照我的意愿完美旋转。但我想夹住所以我添加了最后 3 行但它没有夹住。
-
好的,所以不要先使用 transform.RotateAround 计算你的角度,夹紧它们,然后使用 transform.rotation = 不管。您可以在 Quaternion 和 Vector3 类中使用各种方法来帮助您处理角度
-
实际上,我对此很陌生,您可以更正代码并发布答案吗?我会接受答案。顺便感谢您的快速回复:) @Absinthe
标签: android unity3d camera clamp