Ver Fonte

地磁计绘制点数量限制,射箭

yichael há 4 anos atrás
pai
commit
a2c6321027

+ 6 - 6
Assets/BowArrow/Scenes/Game.unity

@@ -4382,7 +4382,7 @@ RectTransform:
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 0}
-  m_AnchorMax: {x: 0.13043478, y: 1}
+  m_AnchorMax: {x: 0, y: 0}
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 10, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}
@@ -4741,7 +4741,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!224 &485623848
 RectTransform:
   m_ObjectHideFlags: 0
@@ -5440,7 +5440,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 0
+  m_IsActive: 1
 --- !u!114 &579954628
 MonoBehaviour:
   m_ObjectHideFlags: 0
@@ -6439,7 +6439,7 @@ GameObject:
   m_Icon: {fileID: 0}
   m_NavMeshLayer: 0
   m_StaticEditorFlags: 0
-  m_IsActive: 1
+  m_IsActive: 0
 --- !u!224 &704582555
 RectTransform:
   m_ObjectHideFlags: 0
@@ -11428,8 +11428,8 @@ RectTransform:
   m_Father: {fileID: 327121313}
   m_RootOrder: 0
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
-  m_AnchorMin: {x: 0.13043478, y: 0}
-  m_AnchorMax: {x: 0.13043478, y: 1}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
   m_AnchoredPosition: {x: 0, y: 0}
   m_SizeDelta: {x: 20, y: 0}
   m_Pivot: {x: 0.5, y: 0.5}

+ 6 - 47
Assets/BowArrow/Scripts/Bluetooth/BluetoothAim.cs

@@ -251,56 +251,11 @@ class AimHandler
             SetIdentity.onClick.AddListener(DoIdentity);
         }
         
-        // MagCalibrater = new o0MagneticCalibraterSimple();
-        // string magDataStr = PlayerPrefs.GetString("o0MagneticCalibrater");
-        // if (magDataStr.Length > 0)
-        // {
-        //     string[] dataStrs = magDataStr.Split(',');
-        //     if (dataStrs.Length == 6)
-        //     {
-        //         MagCalibrater._Center =  new Vector3(float.Parse(dataStrs[0]), float.Parse(dataStrs[1]), float.Parse(dataStrs[2]));
-        //         MagCalibrater._Radius =  new Vector3(float.Parse(dataStrs[3]), float.Parse(dataStrs[4]), float.Parse(dataStrs[5]));
-        //     }
-        // }
-        // if (MagCalibrationButton != null)
-        // {
-        //     MagCalibrationButton.onClick.AddListener(delegate {
-
-        //         // if (MagCalibrater.Calibration)
-        //         if (MagCalibrater.Calibration)
-        //         {
-        //             Debug.Log(MagCalibrater.Calibration);
-        //             MagCalibrater.Calibration = false;
-        //             Debug.Log(MagCalibrater.Calibration);
-        //             MagCalibrationButton.GetComponentInChildren<Text>().text = "开始地磁计校准";
-        //             float[] dataFloats = new float[6];
-        //             dataFloats[0] = MagCalibrater.Center.x;
-        //             dataFloats[1] = MagCalibrater.Center.y;
-        //             dataFloats[2] = MagCalibrater.Center.z;
-        //             dataFloats[3] = MagCalibrater.Radius.x;
-        //             dataFloats[4] = MagCalibrater.Radius.y;
-        //             dataFloats[5] = MagCalibrater.Radius.z;
-        //             string dataStr = String.Join(",", dataFloats);
-        //             PlayerPrefs.SetString("o0MagneticCalibrater", dataStr);
-        //         }
-        //         else
-        //         {
-        //             Debug.Log(MagCalibrater.Calibration);
-        //             MagCalibrater.Calibration = true;
-
-        //             Debug.Log(MagCalibrater.Calibration);
-        //             MagCalibrationButton.GetComponentInChildren<Text>().text = "停止地磁计校准";
-        //         }
-        //     });
-        // }
         try {
+            
             string magDataStr = PlayerPrefs.GetString("o0MagneticCalibrater");
             MagCalibrater = JsonConvert.DeserializeObject<o0MagneticCalibraterEllipsoidFitting>(magDataStr);
 
-            //List<Vector3> list = MagCalibrater.getRecords();
-            //this.ellipseScript.DrawPointCloud(list);
-            //this.ellipseScript.setEllipseLocalScaleAndCenter(MagCalibrater._Radius, MagCalibrater._Center);
-
         } catch(Exception) {
             MagCalibrater = null;
         }
@@ -313,7 +268,7 @@ class AimHandler
             MagCalibrationButton.onClick.AddListener(delegate {
                 if (MagCalibrater.Calibration)
                 {
-                     List<Vector3> list = MagCalibrater.getRecords();
+                    List<Vector3> list = MagCalibrater.getRecords();
                     //停止校准时候,看看数组值
                     float maxDistance = 0f,ratio = 1f;
                     Vector3 maxVector3 = new Vector3(0,0,0);
@@ -338,6 +293,10 @@ class AimHandler
                         //- MagCalibrater._Center
                         Vector3 v = i ;
                         v *= ratio;
+                        if(endRecords.Count>3000)
+                        {
+                            endRecords.RemoveAt(0);
+                        }
                         endRecords.Add(v);
                     }
                     this.ellipseScript.ClearAndUpdatePointArray();

+ 0 - 171
Assets/BowArrow/Scripts/Bluetooth/ShootCheck.cs

@@ -207,174 +207,3 @@ class CMD {
         return a * 0.0005f;
     }
 }
-
-// public class ShootCheck : MonoBehaviour
-// {
-//     float[] accList = new float[30];
-//     int dataCount = 0;
-//     float gravity = 0;
-//     float maxAcc = 0;
-//     bool hasReachShootThreshold = false;
-//     bool locked = false;
-//     int hitCount = 0;
-//     float rangeAcc; //最新几帧的平均值
-//     [SerializeField] Text text;
-//     public float shootSpeed;
-//     public static ShootCheck ins; 
-
-//     void Start()
-//     {
-//         ins = this;
-//         BluetoothDispatcher.shoot = OnDataReceived;
-//     } 
-
-//     void OnDestroy()
-//     {
-//         ins = null;
-//     }
-
-//     float[] ays = new float[4];
-//     public void OnDataReceived(byte[] bytes) {
-//         Debug.Log("射击模块数据长度" + bytes.Length);
-//         ays[0] = ToAcceleratedSpeed(bytes[7], bytes[8]);
-//         ays[1] = ToAcceleratedSpeed(bytes[17], bytes[18]);
-//         ays[2] = ToAcceleratedSpeed(bytes[27], bytes[28]);
-//         ays[3] = ToAcceleratedSpeed(bytes[37], bytes[38]);
-//         foreach (float ay in ays)
-//         {
-//             try 
-//             {
-//                 if (ins.check(ay))
-//                 {
-//                     if (ArmBow.ins != null)
-//                     {
-//                         ArmBow.ins.ADS_fire();        
-//                     }
-//                 }
-//             } 
-//             catch (Exception e)
-//             {
-//                 Debug.Log(e.Message);
-//             }      
-//         }
-//     }
-
-//     float ToAcceleratedSpeed(byte b1, byte b2)
-//     {
-//         int value = TwoByteToInt(b1, b2);
-//         return (float)value / 32768 * 16;
-//     }
-    
-//     int TwoByteToInt(byte b1, byte b2)
-//     {
-//         ushort twoByte = (ushort)(b1 * 256 + b2);
-//         short shortNum = (short)twoByte;
-//         return (int)shortNum;
-//     }
-
-//     int validFrameCount = 0;
-//     bool check(float acc)
-//     {
-//         DebugLine.show(acc);
-//         DebugLine.showSteady(gravity);
-//         for (int i = accList.Length - 1; i > 0; i--)
-//         {
-//             accList[i] = accList[i - 1];
-//         }
-//         accList[0] = acc;
-//         dataCount++;
-//         if (locked) 
-//         {
-//             return false;
-//         }
-//         if (hasReachShootThreshold) {
-//             validFrameCount++;
-//             if (acc <= gravity) {
-//                 hitCount++;
-//                 shootSpeed = maxAcc - gravity;
-//                 Log("第" + hitCount + "次识别射箭\n过滤正轴重力" + gravity.ToString("#0.000") + "后\n所得最大加速度峰值" + (maxAcc - gravity).ToString("#0.000") + "\n有效帧数" + validFrameCount);
-//                 maxAcc = 0;
-//                 validFrameCount = 0;
-//                 hasReachShootThreshold = false;
-//                 Dolock();
-//                 Invoke("Unlock", 0.8f);
-//                 return true;
-//             } else if (acc > maxAcc) {
-//                 maxAcc = acc;
-//             }
-//             if (validFrameCount > 20)
-//             {
-//                 maxAcc = 0;
-//                 validFrameCount = 0;
-//                 hasReachShootThreshold = false;
-//                 Log("不符合短时间爆发加速");
-//             }
-//             // if (this.isSteady()) {
-//             //     hitCount++;
-//             //     shootSpeed = integral / 16f;
-//             //     Log("第" + hitCount + "次识别射箭\n振幅:" + integral);
-//             //     integral = 0;
-//             //     validFrameCount = 0;
-//             //     hasReachShootThreshold = false;
-//             //     return true;
-//             // } else {
-//             //     integral += Mathf.Abs(acc - gravity);
-//             // }
-//             return false;
-//         }
-//         if (dataCount > steadyFrameCount)
-//         {
-//             if (isSteady())
-//             {
-//                 gravity = Mathf.Clamp(rangeAcc, -0.981f, 0.981f);
-//             } 
-//             if (acc - gravity > 2)
-//             {
-//                 hasReachShootThreshold = true;
-//                 maxAcc = acc;
-
-//                 // integral += Mathf.Abs(acc - gravity);
-//             }
-//         }
-//         return false;
-//     }
-
-//     // float integral = 0;
-
-//     int steadyFrameCount = 6;
-//     bool isSteady() {
-//         float totalAcc = 0;
-//         for (int i = 0; i < steadyFrameCount; i++)
-//         {
-//             totalAcc += accList[i];
-//         }
-//         rangeAcc = totalAcc / steadyFrameCount;
-//         float squareAcc = 0;
-//         for (int i = 0; i < steadyFrameCount; i++)
-//         {
-//             squareAcc += (float) Mathf.Pow(accList[i] - rangeAcc, 2);
-//         }
-//         squareAcc /= steadyFrameCount;
-//         return squareAcc < 0.00012;
-//     }
-
-//     void Dolock() 
-//     {
-//         this.locked = true;
-//     }
-
-//     void Unlock()
-//     {
-//         this.locked = false;
-//     }
-    
-//     void Log(string text)
-//     {
-//         if (this.text != null)
-//         {
-//             this.text.text = text;
-//         } else {
-//             Debug.Log(text);
-//         }
-//     }
-// }