public static Vector3 operator *(Quaternion quat, Vector3 vec){ float num = quat.x * 2f; float num2 = quat.y * 2f; float num3 = quat.z * 2f; float num4 = quat.x * num; float num5 = quat.y * num2; float num6 = quat.z * num3; float num7 = quat.x * num2; float num8 = quat.x * num3; float num9 = quat.y * num3; float num10 = quat.w * num; float num11 = quat.w * num2; float num12 = quat.w * num3; Vector3 result; result.x = (1f - (num5 + num6)) * vec.x + (num7 - num12) * vec.y + (num8 + num11) * vec.z; result.y = (num7 + num12) * vec.x + (1f - (num4 + num6)) * vec.y + (num9 - num10) * vec.z; result.z = (num8 - num11) * vec.x + (num9 + num10) * vec.y + (1f - (num4 + num5)) * vec.z; return result; }
using UnityEngine; using System.Collections; public class Glass_Stabilizer : MonoBehaviour { public Fine_Tune_Controller_Adjuster ctrl; public Quaternion slerpedRotation = Quaternion.identity; public SteamVR_PlayArea steamVR_PlayArea; void OnEnable () { ctrl = GetComponentInParent<Fine_Tune_Controller_Adjuster>(); } // Update is called once per frame void Update () { Vector3 v = ctrl.transform.forward; v.y = 0; v.Normalize(); Quaternion q = Quaternion.LookRotation(ctrl.transform.forward, ctrl.transform.up); slerpedRotation = Quaternion.Slerp(slerpedRotation, q, 0.01f); transform.rotation = slerpedRotation; } }