Unity让UI随鼠标位置摇晃的模板代码:
Vector2 range = new Vector2(4f, 3f); // 定义一个二维向量
Quaternion mStart; // 四元数
Vector2 mRot = Vector2.zero;//旋转
// Use this for initialization
void Start () {
mStart = transform.localRotation; // 获取当前组件的本地旋转四元数
}
private void TransformTrans () {
Vector3 pos = Input.mousePosition; // 获取鼠标位置
float halfWidth = Screen.width * 0.5f; // 相对原点x
float halfHeight = Screen.height * 0.5f; // 相对原点y
float x = Mathf.Clamp ((pos.x - halfWidth) / halfWidth, -1f, 1f); // 返回一个【-1,1】的x值
float y = Mathf.Clamp ((pos.y - halfHeight) / halfHeight, -1f, 1f); // 返回一个【-1,1】的x值
//基于浮点数t返回a到b之间的插值,t限制在0~1之间。当t = 0返回from,当t = 1 返回to。当t = 0.5 返回from和to的平均值
// Quaternion.Euler(new Vector3()) 返回一个旋转角度,绕z轴旋转z度,绕x轴旋转x度,绕y轴旋转y度(像这样的顺序)。
mRot = Vector2.Lerp (mRot,new Vector2 (x, y), Time.deltaTime); // 插值运算
transform.localRotation = mStart * Quaternion.Euler (-mRot.x * range.x, mRot.y * range.y, 0f);
}
}