Przeglądaj źródła

WildAttack逻辑适配

lvjincheng 2 lat temu
rodzic
commit
2b48ef6872

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

@@ -364,6 +364,9 @@ public class ShootCheck : MonoBehaviour
             ArmBow.ins.ADS_fire();
         } else if (DuckHunter.SmartBowController.Instance) {
             DuckHunter.SmartBowController.Instance.OnShooting(shootSpeed);
+        } else if (WildAttack.SmartBowController.Instance)
+        {
+            WildAttack.SmartBowController.Instance.OnShooting(shootSpeed);
         }
     }
 

+ 19 - 8
Assets/BowArrow/Scripts/Expand/AutoResetView.cs

@@ -16,11 +16,17 @@ public class AutoResetView : MonoBehaviour
     public static Action onInstantiate;
 
     public static void DoIdentity() {
-        if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name.StartsWith("Game")) {
-            GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView"));
-        } else if (UnityEngine.SceneManagement.SceneManager.GetActiveScene().name.StartsWith("DuckHunter")) {
-            GameObject.Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView"));
-        } else {
+        if (SceneManager.GetActiveScene().name.StartsWith("Game")) {
+            Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView"));
+        } 
+        else if (SceneManager.GetActiveScene().name.StartsWith("DuckHunter")) {
+            Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView"));
+        }
+        else if (SceneManager.GetActiveScene().name.StartsWith("WildAttack"))
+        {
+            Instantiate(Resources.Load<GameObject>("Prefabs/Views/AutoResetView"));
+        }
+        else {
             AimHandler.ins.DoIdentity();
         }
     }
@@ -56,10 +62,15 @@ public class AutoResetView : MonoBehaviour
         prepareTime -= Time.deltaTime;
         if (prepareTime <= 0) {
             try {
-                AimHandler.ins.DoIdentity();
-                Destroy(gameObject);
+                if (SceneManager.GetActiveScene().name.StartsWith("WildAttack")){
+                    WildAttack.GameMananger.GetInstance().ResetAim();                    
+                } 
+                else
+                {
+                    AimHandler.ins.DoIdentity();
+                }
             }
-            catch (System.Exception) {}
+            catch (Exception) {}
             Destroy(gameObject);
         } else {
             int curTime = Mathf.CeilToInt(prepareTime);

+ 6 - 6
Assets/WildAttack/Resources/UI/MainPanel.prefab

@@ -443,7 +443,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -1.489, y: 17.628}
+  m_AnchoredPosition: {x: -1.4890099, y: 17.627998}
   m_SizeDelta: {x: 53.877, y: 53.503}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &4176843690742484648
@@ -2328,7 +2328,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 1}
   m_AnchorMax: {x: 1, y: 1}
-  m_AnchoredPosition: {x: -67.522, y: -39.532}
+  m_AnchoredPosition: {x: -94, y: -78}
   m_SizeDelta: {x: 0, y: 0}
   m_Pivot: {x: 1, y: 1}
 --- !u!114 &6012519489111160669
@@ -3989,7 +3989,7 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
   m_AnchorMax: {x: 0.5, y: 0.5}
-  m_AnchoredPosition: {x: -0.947, y: -26.279}
+  m_AnchoredPosition: {x: -0.9469948, y: -26.279}
   m_SizeDelta: {x: 98.107, y: 28.943}
   m_Pivot: {x: 0.5, y: 0.5}
 --- !u!222 &6012519489812200515
@@ -4635,9 +4635,9 @@ RectTransform:
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 1, y: 0}
   m_AnchorMax: {x: 1, y: 0}
-  m_AnchoredPosition: {x: -106, y: 153.3}
-  m_SizeDelta: {x: 100, y: 100}
-  m_Pivot: {x: 0.5, y: 0.5}
+  m_AnchoredPosition: {x: -83, y: 40}
+  m_SizeDelta: {x: 80, y: 100}
+  m_Pivot: {x: 1, y: 0}
 --- !u!222 &6012519489998635843
 CanvasRenderer:
   m_ObjectHideFlags: 0

+ 1 - 1
Assets/WildAttack/Scenes/WildAttack.unity

@@ -9037,7 +9037,7 @@ MonoBehaviour:
   m_ScaleFactor: 1
   m_ReferenceResolution: {x: 1920, y: 1080}
   m_ScreenMatchMode: 0
-  m_MatchWidthOrHeight: 0
+  m_MatchWidthOrHeight: 1
   m_PhysicalUnit: 3
   m_FallbackScreenDPI: 96
   m_DefaultSpriteDPI: 96

+ 60 - 103
Assets/WildAttack/Scripts/Manager/GameMananger.cs

@@ -62,6 +62,9 @@ namespace WildAttack
         private ParticleSystem failParticle;
         private ParticleSystem victoryParticle;
 
+        //触摸检测器
+        JCUnityLib.TouchChecker touchChecker = new JCUnityLib.TouchChecker();
+
         #endregion
 
         #region Function
@@ -95,18 +98,7 @@ namespace WildAttack
 
             Physics.autoSyncTransforms = true;
             InitForLimitBound();
-            RegisterSDK();
-        }
-
-        /// <summary>
-        /// 注册SDK相关
-        /// </summary>
-        private void RegisterSDK()
-        {
-            //SmartBowHelper.GetInstance().OnBluetoothError += OnBluetoothError;
-            //SmartBowHelper.GetInstance().OnBluetoothModuleInited += OnBluetoothModuleInited;
-            //SmartBowHelper.GetInstance().OnFunctionKeyPress += OnFunctionKeyPress;
-            //SmartBowHelper.GetInstance().OnFunctionKeyLongPress += OnFunctionKeyLongPress;
+            InitTouchChecker();
         }
 
         /// <summary>
@@ -264,16 +256,9 @@ namespace WildAttack
             UpdateBowUnityEditor();
             if (Input.GetKeyDown(KeyCode.Space))
             {
-                if (CheckCrossHairOverUI())
-                {
-                    return;
-                }
-                bow.Shoot(testSpeed);
+                if (!isOver) bow.Shoot(testSpeed);
             }
             #endregion
-
-#else
-        UpdateBowAndriod();
 #endif
 
             // 游戏结束后相机移动到对应位置
@@ -295,39 +280,39 @@ namespace WildAttack
         /// ui检测
         /// </summary>
         /// <returns></returns>
-        private bool CheckCrossHairOverUI()
-        {
-            if (!isOver) return false;
-
-            EventSystem eventSystem = EventSystem.current;
-            PointerEventData pointerEventData = new PointerEventData(eventSystem);
-            // 获取准星pos 通过eventsystem检测下方是否有按钮
-            pointerEventData.position = new Vector3(UIManager.GetInstance().GetCrossHairPos().x, UIManager.GetInstance().GetCrossHairPos().y, 0);
-            //射线检测ui
-            List<RaycastResult> uiRaycastResultCache = new List<RaycastResult>();
-            eventSystem.RaycastAll(pointerEventData, uiRaycastResultCache);
-            if (uiRaycastResultCache.Count > 0)
-            {
-                // 是否有button
-                Button btn = uiRaycastResultCache[0].gameObject.GetComponent<Button>();
-                if (btn == null)
-                {
-                    // 防止检测到button下的text (ui注意设置 button下text不要勾选raycast
-                    btn = uiRaycastResultCache[0].gameObject.transform.GetComponentInParent<Button>();
-                    if (btn == null)
-                    {
-                        return false;
-                    }
-                }
-                btn.onClick.Invoke();
-                //Debug.Log("eventsystem 触发 + " + uiRaycastResultCache[0].gameObject.name);
-                return true;
-            }
-            else
-            {
-                return false;
-            }
-        }
+        //private bool CheckCrossHairOverUI()
+        //{
+        //    if (!isOver) return false;
+
+        //    EventSystem eventSystem = EventSystem.current;
+        //    PointerEventData pointerEventData = new PointerEventData(eventSystem);
+        //    // 获取准星pos 通过eventsystem检测下方是否有按钮
+        //    pointerEventData.position = new Vector3(UIManager.GetInstance().GetCrossHairPos().x, UIManager.GetInstance().GetCrossHairPos().y, 0);
+        //    //射线检测ui
+        //    List<RaycastResult> uiRaycastResultCache = new List<RaycastResult>();
+        //    eventSystem.RaycastAll(pointerEventData, uiRaycastResultCache);
+        //    if (uiRaycastResultCache.Count > 0)
+        //    {
+        //        // 是否有button
+        //        Button btn = uiRaycastResultCache[0].gameObject.GetComponent<Button>();
+        //        if (btn == null)
+        //        {
+        //            // 防止检测到button下的text (ui注意设置 button下text不要勾选raycast
+        //            btn = uiRaycastResultCache[0].gameObject.transform.GetComponentInParent<Button>();
+        //            if (btn == null)
+        //            {
+        //                return false;
+        //            }
+        //        }
+        //        btn.onClick.Invoke();
+        //        //Debug.Log("eventsystem 触发 + " + uiRaycastResultCache[0].gameObject.name);
+        //        return true;
+        //    }
+        //    else
+        //    {
+        //        return false;
+        //    }
+        //}
 
         /// <summary>
         /// 初始化相机等
@@ -377,47 +362,35 @@ namespace WildAttack
             }
         }
         /// <summary>
-        /// android端旋转弓
+        /// 移动端用户触屏监听
         /// </summary>
-        private void UpdateBowAndriod()
+        private void InitTouchChecker()
         {
-            if (Input.touchCount == 1)
+            touchChecker.onMoved += delegate (Touch t, bool isOnUI)
             {
-                Touch touch = Input.GetTouch(0);
-                if (touch.phase == TouchPhase.Began)
-                {
+                if (isOnUI) return;
+                if (shootSpawn <= GameModule.GetInstance().GetData("downTime") && shootSpawn > 0) return;
 
-                }
-                else if (touch.phase == TouchPhase.Moved)
-                {
-                    if (shootSpawn <= GameModule.GetInstance().GetData("downTime") && shootSpawn > 0) return;
-
-                    Vector3 dis = touch.rawPosition - touch.deltaPosition;
-                    if (dis.x != 0 || dis.y != 0)
-                    {
-                        if (isOver)
-                        {
-                            CrossHairTrans.eulerAngles = LimitCrossHair(new Vector3(CrossHairTrans.eulerAngles.x - (touch.deltaPosition.y * Time.deltaTime), CrossHairTrans.eulerAngles.y + (touch.deltaPosition.x * Time.deltaTime), 0));
-                        }
-                        else
-                        {
-                            CrossHairTrans.eulerAngles = LimitAngles(new Vector3(CrossHairTrans.eulerAngles.x - (touch.deltaPosition.y * Time.deltaTime), CrossHairTrans.eulerAngles.y + (touch.deltaPosition.x * Time.deltaTime), 0));
-                            CrossHairTransRaycast();
-                        }
-                    }
-                }
-                else if (touch.phase == TouchPhase.Ended)
+                Vector3 dis = t.rawPosition - t.deltaPosition;
+                if (dis.x != 0 || dis.y != 0)
                 {
-                    if (CheckCrossHairOverUI())
+                    if (isOver)
                     {
-                        return;
+                        CrossHairTrans.eulerAngles = LimitCrossHair(new Vector3(CrossHairTrans.eulerAngles.x - (t.deltaPosition.y * Time.deltaTime), CrossHairTrans.eulerAngles.y + (t.deltaPosition.x * Time.deltaTime), 0));
                     }
-                    if (!EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
+                    else
                     {
-                        bow.Shoot(testSpeed);
+                        CrossHairTrans.eulerAngles = LimitAngles(new Vector3(CrossHairTrans.eulerAngles.x - (t.deltaPosition.y * Time.deltaTime), CrossHairTrans.eulerAngles.y + (t.deltaPosition.x * Time.deltaTime), 0));
+                        CrossHairTransRaycast();
                     }
                 }
-            }
+            };
+            touchChecker.onEnded += delegate (Touch t, bool isOnUI)
+            {
+                if (isOnUI) return;
+                if (isOver) return;
+                bow.Shoot(testSpeed);
+            };
         }
         /// <summary>
         /// 归位
@@ -429,7 +402,7 @@ namespace WildAttack
             {
                 CrossHairTrans.localRotation = Quaternion.Euler(Vector3.zero);
                 bow.transform.localRotation = CrossHairTrans.localRotation;
-                SmartBowController.Instance.ResetAim();
+                AimHandler.ins?.DoIdentity();
             }
             else
             {
@@ -563,13 +536,9 @@ namespace WildAttack
             // speed区间 7~20?
             // 在这里判断是否和ui交互? 优先判断ui 不是ui再射箭
 
-            if (CheckCrossHairOverUI())
-            {
-                return;
-            }
-
+            if (isOver) return;
             bow.Shoot(speed * smartBowSpeed);
-            TipText.Show((speed * smartBowSpeed).ToString());
+            //TipText.Show((speed * smartBowSpeed).ToString());
             // 角度 OnRotationUpdate
         }
 
@@ -577,18 +546,6 @@ namespace WildAttack
         {
             shootSpawn = spawn;
         }
-
-
-        void OnFunctionKeyPress()
-        {
-            ResetAim();
-        }
-
-        void OnFunctionKeyLongPress()
-        {
-            TipText.Show(smartBowSpeed.ToString());
-        }
-
         #endregion
 
         #region 限制其显示范围不超出屏幕

+ 1 - 1
Assets/WildAttack/Scripts/Manager/UIManager.cs

@@ -80,7 +80,7 @@ namespace WildAttack
             if (!gameOverPanel.gameObject.activeSelf)
             {
                 gameOverPanel.gameObject.SetActive(true);
-                crossHair.gameObject.SetActive(true);
+                crossHair.gameObject.SetActive(false);
                 gameOverPanel.ShowGameOverPanel(isWin);
                 //GameMananger.GetInstance().ResetAim();
                 //crossHair.ResetCrossHair();

+ 3 - 11
Assets/WildAttack/Scripts/SmartBowController.cs

@@ -23,25 +23,17 @@ namespace WildAttack
 
         public void OnRotationUpdate(Quaternion rotation)
         {
-            //GameManager.Instance?.OnModuleRotationUpdate(rotation);
+            GameMananger.GetInstance().OnRotationUpdate(rotation);
         }
 
-        float _lastShootTime = 0;
         public void OnShooting(float speed)
         {
-            if (Time.realtimeSinceStartup - _lastShootTime < 1) return;
-            _lastShootTime = Time.realtimeSinceStartup;
-            //GameManager.Instance?.OnModuleShooting(speed);
-        }
-
-        public void ResetAim()
-        {
-            //AutoResetView.DoIdentity();
+            GameMananger.GetInstance().OnShooting(speed);
         }
 
         public bool IsBluetoothModuleInited()
         {
-            return false;
+            return BluetoothAim.ins && BluetoothAim.ins.status == BluetoothStatusEnum.ConnectSuccess;
         }
     }
 }

+ 1 - 0
Assets/WildAttack/Scripts/UI/GameOverPanel.cs

@@ -27,6 +27,7 @@ namespace WildAttack
         // Start is called before the first frame update
         void Start()
         {
+            SimulateMouseController.ins?.AddOpenLocker("NotGame");
             RegisterEvent();
         }
         #endregion

+ 3 - 3
Assets/WildAttack/Scripts/UI/MainPanel.cs

@@ -156,10 +156,10 @@ namespace WildAttack
             // todo: 不连接时 归位正中间
             //       UI改回1280 归位按钮放大
             AudioMgr.ins.PlayBtn();
-            GameMananger.GetInstance().ResetAim();
-           //TipText.Show("OnClick_ResetAim");
+            AutoResetView.DoIdentity();
+            //TipText.Show("OnClick_ResetAim");
 
-           //isResetAim = true;
+            //isResetAim = true;
         }
         //public void OnClick_StopRotationSensor()
         //{