Jelajahi Sumber

建议屏幕距离

lvjincheng 3 tahun lalu
induk
melakukan
77d6828ed4

+ 1 - 1
Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/cn.json

@@ -27,7 +27,7 @@
     "setup_fix-game-bg": "固定游戏背景",
     "setup_train-mode": "训练模式",
     "setup_screen-size": "屏幕尺寸 {0} 英寸",
-    "setup_screen-distance": "屏幕距离 {0} 米",
+    "setup_screen-distance": "建议屏幕距离 {0} 米",
     "me_avatar-select": "头像选择",
     "rank_title": "排行榜",
     "rank_tab_global": "全球排行",

+ 1 - 1
Assets/BowArrow/Scripts/Components/TextAutoLanguage2/Resources/TextAutoLanguage2/en.json

@@ -27,7 +27,7 @@
     "setup_fix-game-bg": "FixGameBG",
     "setup_train-mode": "TrainMode",
     "setup_screen-size": "Screen Size {0} Inch",
-    "setup_screen-distance": "Screen Distance {0} M",
+    "setup_screen-distance": "Advise Screen Distance {0} M",
     "me_avatar-select": "Avatar Select",
     "rank_title": "Rank",
     "rank_tab_global": "Global\nRanking",

+ 1 - 2
Assets/BowArrow/Scripts/Game/BowCamera.cs

@@ -67,8 +67,7 @@ public class BowCamera : MonoBehaviour
         localEulerAngles = transform.localEulerAngles;
         if (CommonConfig.SpecialVersion1) {
             if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name.Equals("GameChallenge")) {
-                // this.cameraComp.fieldOfView = 25;
-                this.cameraComp.fieldOfView = UserSettings.ins.bowRotateConvert.GetFieldOfView();
+                this.cameraComp.fieldOfView = UserSettings.ins.bowRotateConvert.fieldOfView;
             }
         }
         RecordDefaultCameraFieldOfView();

+ 4 - 3
Assets/BowArrow/Scripts/Manager/LoginMgr/LoginMgr.cs

@@ -161,15 +161,16 @@ public class UserSettings {
 public class BowRotateConvert {
     public float screenSize = 60; //屏幕尺寸(英寸)
     public float screenDistance = 2.5f; //玩家距离屏幕多远(米)
+    [NonSerialized] public float fieldOfView = 25;
 
-    //获取合适的视野大小
-    public float GetFieldOfView() {
+    //获取建议的屏幕距离
+    public float GetAdviseScreenDistance() {
         float w = 16;
         float h = 9;
         float s1 = screenSize * 0.0254f;
         float unit = s1 / Mathf.Sqrt(w * w + h * h);
         float screenHeight = 9 * unit;
-        return 2 * Mathf.Atan(screenHeight * 0.5f / screenDistance) * Mathf.Rad2Deg;
+        return screenHeight * 0.5f / Mathf.Tan(fieldOfView / 2 / 180 * Mathf.PI);
     }
 
     // 游戏旋转角度 : 实际旋转角度 (这个版本丢弃掉这个功能-所以直接返回1)

+ 20 - 17
Assets/BowArrow/Scripts/View/SetUpView.cs

@@ -38,27 +38,28 @@ public class SetUpView : MonoBehaviour
             //save
             UserSettings.ins.bowRotateConvert.screenSize = v;
             UserSettings.ins.Save();
-            PopupMgr.ins.ShowTip("闯关场景视野大小=" + UserSettings.ins.bowRotateConvert.GetFieldOfView());
+            ShowScreenDistance(UserSettings.ins.bowRotateConvert.GetAdviseScreenDistance());
             // PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("转化比率 = ") + UserSettings.ins.bowRotateConvert.GetRate());
         };
         UnityAction<string> onEndEdit_inputDistance = (string str) => {
-            inputDistance.SetTextWithoutNotify("");
-            float v = (float) System.Math.Round(double.Parse(str), 2);
-            if (v < 0.1 || v > 100) {
-                PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("输入值不在常规范围内"));
-                return;
-            }
-            ShowScreenDistance(v);
-            //save
-            UserSettings.ins.bowRotateConvert.screenDistance = v;
-            UserSettings.ins.Save();
-            PopupMgr.ins.ShowTip("闯关场景视野大小=" + UserSettings.ins.bowRotateConvert.GetFieldOfView());
+            // inputDistance.SetTextWithoutNotify("");
+            // float v = (float) System.Math.Round(double.Parse(str), 2);
+            // if (v < 0.1 || v > 100) {
+            //     PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("输入值不在常规范围内"));
+            //     return;
+            // }
+            // ShowScreenDistance(v);
+            // //save
+            // UserSettings.ins.bowRotateConvert.screenDistance = v;
+            // UserSettings.ins.Save();
             // PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("转化比率 = ") + UserSettings.ins.bowRotateConvert.GetRate());
         };
         inputSize.onEndEdit.AddListener(onEndEdit_inputSize);
         inputDistance.onEndEdit.AddListener(onEndEdit_inputDistance);
+        inputDistance.readOnly = true;
         ShowScreenSize(UserSettings.ins.bowRotateConvert.screenSize);
-        ShowScreenDistance(UserSettings.ins.bowRotateConvert.screenDistance);
+        // ShowScreenSize(UserSettings.ins.bowRotateConvert.screenDistance);
+        ShowScreenDistance(UserSettings.ins.bowRotateConvert.GetAdviseScreenDistance());
         if (CommonConfig.isReleaseVersion) {
             inputSize.transform.parent.gameObject.SetActive(false);
             transform.Find("Items/BowCameraFixed").gameObject.SetActive(false);
@@ -73,10 +74,12 @@ public class SetUpView : MonoBehaviour
     }
 
     void ShowScreenDistance(float v) {
-        string vStr = v.ToString("#0.00");
-        TextAutoLanguage2 textAutoLanguage2 = inputDistance.transform.Find("Placeholder").GetComponent<TextAutoLanguage2>();
-        textAutoLanguage2.textFormatArgs = new object[]{vStr};
-        textAutoLanguage2.ApplyToText();
+        // string vStr = v.ToString("#0.00");
+        // TextAutoLanguage2 textAutoLanguage2 = inputDistance.transform.Find("Placeholder").GetComponent<TextAutoLanguage2>();
+        // textAutoLanguage2.textFormatArgs = new object[]{vStr};
+        // textAutoLanguage2.ApplyToText();
+
+        inputDistance.text = string.Format(TextAutoLanguage2.GetTextByKey("setup_screen-distance"), v.ToString("#0.00"));
     }
 
     public void CheckBox(GameObject checkBox) {