Просмотр исходного кода

不同重量的箭,弓轨势能和箭的动能转换,求箭的速度

lvjincheng 4 лет назад
Родитель
Сommit
3c266c685d

+ 13 - 1
Assets/BowArrow/Resources/Prefabs/BluetoothHolder.prefab

@@ -839,7 +839,19 @@ MonoBehaviour:
   m_CharacterLimit: 0
   m_OnEndEdit:
     m_PersistentCalls:
-      m_Calls: []
+      m_Calls:
+      - m_Target: {fileID: 4155488363126191677}
+        m_TargetAssemblyTypeName: BluetoothHolder, Assembly-CSharp
+        m_MethodName: SetArrowWeight
+        m_Mode: 2
+        m_Arguments:
+          m_ObjectArgument: {fileID: 5588672546032379344}
+          m_ObjectArgumentAssemblyTypeName: UnityEngine.UI.InputField, UnityEngine.UI
+          m_IntArgument: 0
+          m_FloatArgument: 0
+          m_StringArgument: 
+          m_BoolArgument: 0
+        m_CallState: 2
   m_OnSubmit:
     m_PersistentCalls:
       m_Calls: []

+ 5 - 0
Assets/BowArrow/Scripts/Bluetooth/BluetoothHolder.cs

@@ -65,4 +65,9 @@ public class BluetoothHolder : MonoBehaviour
         LoginMgr.myUserInfo.deviceCalibrateGuideFinish = false;
         LoginMgr.myUserInfo.Save();
     }
+
+    public void SetArrowWeight(InputField inputField) {
+        string text = inputField.text;
+        ShootCheck.ins.arrowWeight = float.Parse(text);
+    }
 }

+ 3 - 1
Assets/BowArrow/Scripts/Bluetooth/ShootCheck.cs

@@ -224,6 +224,8 @@ public class ShootCheck : MonoBehaviour
         return (int)shortNum;
     }
 
+    public float arrowWeight = 60;
+
     bool check(float ax, float ay, float az, string t)
     {
         float acc = ay;
@@ -289,7 +291,7 @@ public class ShootCheck : MonoBehaviour
 
                 string strShootSpeed = "弓轨速度: " + shootSpeed + " 帧数: " + keyAccList.Count + "\n";
 
-                shootSpeed *= 1.491f;
+                shootSpeed = Mathf.Sqrt(shootSpeed * shootSpeed * arrowWeight / LoginMgr.myUserInfo.actualArrowWeight);  
 
                 strShootSpeed += "箭的速度: " + shootSpeed + "\n";
                 

+ 3 - 1
Assets/BowArrow/Scripts/Debug/TargetDistanceSlider.cs

@@ -8,7 +8,9 @@ public class TargetDistanceSlider : MonoBehaviour
     public void onSlider() 
     {
         float distance = this.GetComponent<Slider>().value * 70f;
-        TargetBody target = GameObject.Find("GameArea/010").GetComponentInChildren<TargetBody>();
+        GameObject targetBodyNode = GameObject.Find("GameArea/010");
+        if (targetBodyNode == null) return;
+        TargetBody target = targetBodyNode.GetComponentInChildren<TargetBody>();
         target.SetDistance(distance);
         Text text = this.transform.Find("Text").GetComponent<Text>();
         text.text = "箭靶距离 - " + distance.ToString("#0.00") + "米";