using UnityEngine; public class Hamilton1843 : MonoBehaviour //★哈密尔顿1843 { public enum TurnStyle //▲旋转风格 { None, //----------------△无旋转 Euler, //---------------△欧拉角 LookRotation, //--------△注视旋转 AngleAxis, //-----------△角度轴 FromToRotation, //------△旋转到 } public TurnStyle turnStyle; //---------●旋转风格 public bool isInverse = false; //------●旋转朝向取逆判定 void Update () {//■更新■ InputDetection(); //模糊输入检测,进行用户测试输入判定 Quaternion rotation = new Quaternion(); //四元数角度缓存 switch (turnStyle) //根据旋转风格判定 { case TurnStyle.None://----------------△无旋转 rotation = Quaternion.identity; break; case TurnStyle.Euler://---------------△欧拉角 rotation = Quaternion.Euler(-90, 0, 0); break; case TurnStyle.LookRotation://--------△注视旋转 rotation = Quaternion.LookRotation(Vector3.up, Vector3.up); break; case TurnStyle.AngleAxis://-----------△角度轴 rotation = Quaternion.AngleAxis(-90, Vector3.right); break; case TurnStyle.FromToRotation://------△同向 rotation = Quaternion.FromToRotation(Vector3.up, Vector3.back); break; } //应用旋转,并顺便判定顺逆 transform.rotation = isInverse ? Quaternion.Inverse(rotation) : rotation; } void InputDetection() {//■模糊输入检测■ if (Input.inputString != "") //如果有输入 { char c = Input.inputString[0]; //获取输入的首字符 if (c >= 48 && c <= 57) //如果按下的是 0~9 { int i = int.Parse(Input.inputString); //字符串转整数 if (i >= 0 && i <= 4) //如果按下的是 0~4 { turnStyle = (TurnStyle)i; //强转输入为旋转风格 } } else if (c == 32) //如果按下的是 空格键 { isInverse = !isInverse; //切换取反 } } } }