코드가 작동하지 않습니다. 카메라를 클램프하려하지만 작동하지 않습니다. 즉시 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
마지막 3 줄을 제거하면 카메라가 Y 축을 10과 -10으로 고정하고 X 축을 45와 -45 –
으로 고정하고 싶습니다. 원하는만큼 완벽하게 회전합니다. 하지만 나는 마지막 3 줄을 추가했지만 클램핑하지 않도록 클램프를 원합니다. –