فهرست منبع

三个游戏的准心越界提示

lvjincheng 2 سال پیش
والد
کامیت
7a840d6a0b

+ 213 - 0
Assets/BowArrow/Resources/Prefabs/CrossHairOutBoundChecker1.prefab

@@ -0,0 +1,213 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1260546180181321422
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4955470051127942227}
+  - component: {fileID: 9181745763393146026}
+  - component: {fileID: 1925971231763318881}
+  - component: {fileID: 1424465692820929678}
+  m_Layer: 5
+  m_Name: OutTip
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &4955470051127942227
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1260546180181321422}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 783234584897278844}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0.5, y: 1}
+  m_AnchorMax: {x: 0.5, y: 1}
+  m_AnchoredPosition: {x: 0, y: -410.00006}
+  m_SizeDelta: {x: 880, y: 50}
+  m_Pivot: {x: 0.5, y: 1}
+--- !u!222 &9181745763393146026
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1260546180181321422}
+  m_CullTransparentMesh: 0
+--- !u!114 &1925971231763318881
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1260546180181321422}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 0.107547104, b: 0.17932925, a: 1}
+  m_RaycastTarget: 0
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 1ad2cf6c2f09744489d8c60b3fe3bab2, type: 3}
+    m_FontSize: 32
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 1
+    m_MaxSize: 40
+    m_Alignment: 4
+    m_AlignByGeometry: 0
+    m_RichText: 1
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 1
+    m_LineSpacing: 1
+  m_Text: "\u7784\u51C6\u65B9\u5411\u5DF2\u8D85\u51FA\u89C6\u91CE\u8303\u56F4\uFF01"
+--- !u!114 &1424465692820929678
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1260546180181321422}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e19747de3f5aca642ab2be37e372fb86, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_EffectColor: {r: 1, g: 1, b: 1, a: 0.5}
+  m_EffectDistance: {x: 1, y: -1}
+  m_UseGraphicAlpha: 1
+--- !u!1 &2633200938255157098
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 783234584897278844}
+  - component: {fileID: 8394623156502835066}
+  - component: {fileID: 4351479609812335333}
+  - component: {fileID: 8053617676424488294}
+  - component: {fileID: 8658187316912782735}
+  m_Layer: 5
+  m_Name: CrossHairOutBoundChecker1
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &783234584897278844
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2633200938255157098}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0, y: 0, z: 0}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 4955470051127942227}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 0, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: 0, y: 0}
+  m_Pivot: {x: 0, y: 0}
+--- !u!223 &8394623156502835066
+Canvas:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2633200938255157098}
+  m_Enabled: 1
+  serializedVersion: 3
+  m_RenderMode: 0
+  m_Camera: {fileID: 0}
+  m_PlaneDistance: 100
+  m_PixelPerfect: 0
+  m_ReceivesEvents: 1
+  m_OverrideSorting: 0
+  m_OverridePixelPerfect: 0
+  m_SortingBucketNormalizedSize: 0
+  m_AdditionalShaderChannelsFlag: 0
+  m_SortingLayerID: 0
+  m_SortingOrder: 0
+  m_TargetDisplay: 0
+--- !u!114 &4351479609812335333
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2633200938255157098}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_UiScaleMode: 1
+  m_ReferencePixelsPerUnit: 100
+  m_ScaleFactor: 1
+  m_ReferenceResolution: {x: 1280, y: 720}
+  m_ScreenMatchMode: 0
+  m_MatchWidthOrHeight: 1
+  m_PhysicalUnit: 3
+  m_FallbackScreenDPI: 96
+  m_DefaultSpriteDPI: 96
+  m_DynamicPixelsPerUnit: 1
+  m_PresetInfoIsWorld: 0
+--- !u!114 &8053617676424488294
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2633200938255157098}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreReversedGraphics: 1
+  m_BlockingObjects: 0
+  m_BlockingMask:
+    serializedVersion: 2
+    m_Bits: 4294967295
+--- !u!114 &8658187316912782735
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2633200938255157098}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 33109d704c5628443b767d6817372b1a, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  outTip: {fileID: 1260546180181321422}

+ 7 - 0
Assets/BowArrow/Resources/Prefabs/CrossHairOutBoundChecker1.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f7fcbda3dc3917f48b09d291dc615a24
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 76 - 0
Assets/BowArrow/Scripts/Game/CrossHairOutBoundChecker1.cs

@@ -0,0 +1,76 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+/* 检测器-检测游戏射击准心是否出屏幕边界 (打鸭子、塔防关卡、水果大人) */
+public class CrossHairOutBoundChecker1 : MonoBehaviour
+{
+    [SerializeField] GameObject outTip;
+    string[] tips = null;
+    int tipIndex = -1;
+
+    void Awake()
+    {
+        outTip.SetActive(false);
+    }
+
+    void Start() {
+        tips = new string[]{
+            TextAutoLanguage2.GetTextByKey("game_crosshair_outbound_0"),
+            TextAutoLanguage2.GetTextByKey("game_crosshair_outbound_1"),
+            TextAutoLanguage2.GetTextByKey("game_crosshair_outbound_2"),
+            TextAutoLanguage2.GetTextByKey("game_crosshair_outbound_3"),
+        };
+    }
+
+    void Update()
+    {
+        int newTipIndex = GetNetTipIndex();
+        if (newTipIndex != tipIndex) {
+            tipIndex = newTipIndex;
+            if (tipIndex >= 0) {
+                outTip.GetComponent<Text>().text = tips[tipIndex];
+            }
+        }
+        if (newTipIndex >= 0) {
+            if (!outTip.activeSelf) outTip.SetActive(true);
+        } else {
+            if (outTip.activeSelf) outTip.SetActive(false);
+        }
+    }
+
+    [SerializeField] public RectTransform crossHair;
+    public System.Func<int> FetchOutBoundIndex;
+    int GetNetTipIndex()
+    {
+        if (crossHair)
+        {
+            if (crossHair.gameObject.activeInHierarchy)
+            {
+                Vector3 pos = crossHair.position;
+                if (pos.x < 3)
+                {
+                    return 0;
+                }
+                if (pos.x > Screen.width - 3)
+                {
+                    return 1;
+                }
+                if (pos.y > Screen.height - 3)
+                {
+                    return 2;
+                }
+                if (pos.y < 3)
+                {
+                    return 3;
+                }
+            }
+        }
+        else if (FetchOutBoundIndex != null)
+        {
+            return FetchOutBoundIndex.Invoke();
+        }
+        return -1;
+    }
+}

+ 11 - 0
Assets/BowArrow/Scripts/Game/CrossHairOutBoundChecker1.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 33109d704c5628443b767d6817372b1a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 3 - 0
Assets/DuckHunter/Scripts/CrossHair.cs

@@ -16,6 +16,9 @@ namespace DuckHunter
             InitRotateRangeVH();
             UpdateHideShow(SB_EventSystem.ins && SB_EventSystem.ins.simulateMouseIsAwaked);
             GlobalEventCenter.ins.onSimulateMouseAwakeChanged += UpdateHideShow;
+
+            CrossHairOutBoundChecker1 outBoundChecker = Instantiate(Resources.Load<GameObject>("Prefabs/CrossHairOutBoundChecker1")).GetComponent<CrossHairOutBoundChecker1>();
+            outBoundChecker.crossHair = transform as RectTransform;
         }
 
         void OnDestroy()

+ 2 - 0
Assets/FruitMaster/Scripts/JCFruitMaster.cs

@@ -24,6 +24,8 @@ public class JCFruitMaster : MonoBehaviour
         gamingUI.sortingOrder = 4;
         gamingUI.transform.Find("PauseExitBack/ExitBtn").gameObject.SetActive(false);
         gamingUI.transform.Find("PauseExitBack/PauseBtn").gameObject.SetActive(false);
+        CrossHairOutBoundChecker1 outBoundChecker = Instantiate(Resources.Load<GameObject>("Prefabs/CrossHairOutBoundChecker1")).GetComponent<CrossHairOutBoundChecker1>();
+        outBoundChecker.crossHair = aimingCross.transform as RectTransform;
     }
 
     void OnDestroy()

+ 20 - 0
Assets/WildAttack/Scripts/Manager/GameMananger.cs

@@ -611,6 +611,26 @@ namespace WildAttack
             {
                 if (Mathf.Abs(angleX) > Mathf.Abs(30f)) angles.x = 30f * (angleX > 0 ? 1 : -1);
             }
+            if (angles.y < -_rangeRotateY + (offset.y - 360) + 0.5f)
+            {
+                outBoundIndex = 0;
+            }
+            else if (angles.y > _rangeRotateY + (offset.y - 360) - 0.5f)
+            {
+                outBoundIndex = 1;
+            }
+            else if (angles.x < -30f + 0.5f)
+            {
+                outBoundIndex = 2;
+            }
+            else if (angles.x > 30f - 0.5f)
+            {
+                outBoundIndex = 3;
+            }
+            else
+            {
+                outBoundIndex = -1;
+            }
             return angles;
         }
 

+ 9 - 0
Assets/WildAttack/Scripts/SmartBowController.cs

@@ -14,6 +14,15 @@ namespace WildAttack
             Instance = this;
             SimulateMouseController.ins?.RemoveOpenLocker("NotGame");
             CameraToLook.ins.onParseRotation += OnRotationUpdate;
+
+            StartCoroutine(SetOutBoundChecker());
+        }
+
+        IEnumerator SetOutBoundChecker()
+        {
+            yield return null;
+            CrossHairOutBoundChecker1 outBoundChecker = Instantiate(Resources.Load<GameObject>("Prefabs/CrossHairOutBoundChecker1")).GetComponent<CrossHairOutBoundChecker1>();
+            outBoundChecker.FetchOutBoundIndex = () => GameMananger.GetInstance().outBoundIndex;
         }
 
         void OnDestroy()