无法夹紧我的相机旋转值



我做了一个围绕物体旋转的相机......一切正常。但我无法夹紧或限制相机旋转。这是代码..

//First - Get the Initial Position
if (Input.GetMouseButtonDown(0))
{
mPreviousPosition = mCamRef.ScreenToViewportPoint(Input.mousePosition);
}
//Second - the difference amount and change in x
if (Input.GetMouseButton(0))
{
Vector3 newPosition = mCamRef.ScreenToViewportPoint(Input.mousePosition);
Vector3 direction = mPreviousPosition - newPosition;

float rotationAroundYAxis = -direction.x * 180;
mCamRef.transform.position = mTargetToRotateAround.position;
rotationAroundYAxis = Mathf.Clamp(rotationAroundYAxis, -60f,60f);

mCamRef.transform.rotation = Quaternion.Euler(Vector3.up * rotationAroundYAxis);
mCamRef.transform.Translate(new Vector3(mDistanceToTarget.x, mDistanceToTarget.y, -mDistanceToTarget.z));
mPreviousPosition = newPosition;
}

你正在夹紧

rotationAroundYAxis = Mathf.Clamp(rotationAroundYAxis, -0.6f, 0.6f);

但是然后将其用于从当前旋转到给定数量的Transform.Rotate=> 你总是旋转一些东西。

您可能宁愿使用例如Quaternion.Euler

mCamRef.transform.rotation = Quaternion.Euler(Vector3.up * rotationAroundYAxis);

但是,请注意,使用+- 0.6°固定旋转几乎没有任何意义......

从你的评论你想夹到 +-60° 所以宁愿使用

rotationAroundYAxis = Mathf.Clamp(rotationAroundYAxis, -60, 60);

虽然我仍然不明白你想如何从方向矢量获得角度旋转......

最新更新