主体代码如下:
int dir = 1;//方向值,控制来回旋转
float axisZ = 0;//旋转的局部坐标z值
void AutoRotateZRange(Transform t)
{
if (!t) return;
axisZ += 10f * Time.deltaTime * dir;
if (axisZ >= 20f)
{
dir = -1;
}
if (axisZ <= -20f)
{
dir = 1;
}
axisZ = ClampAngle(axisZ, -20f, 20f);
Quaternion quaternion = Quaternion.Euler(t.transform.localEulerAngles.x,t.transform.localEulerAngles.y, axisZ);
t.transform.localRotation = quaternion;
}
所有旋转角度常规数值其实是在-360—360度区间,对于旋转角度范围予以限制
float ClampAngle(float angle, float min, float max)
{
if (angle < -360)
{
angle += 360;
}
if (angle > 360)
{
angle -= 360;
}
return Mathf.Clamp(angle, min, max);
}