我做了一个围绕物体旋转的相机......一切正常。但我无法夹紧或限制相机旋转。这是代码..
//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);
虽然我仍然不明白你想如何从方向矢量获得角度旋转......