Browse Source

修改bug

DESKTOP-FB72PO8\Administrator 1 day ago
parent
commit
f56266f949

+ 248 - 1
Assets/Res/UI/CombatHPPanel.prefab

@@ -244,6 +244,16 @@ MonoBehaviour:
     isAssetBundle: 0
     isList: 0
     ListCollectorDatas: []
+  - key: DuiPingWidget
+    gameObject: {fileID: 6569538894357456337}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
+  - key: FbDuiPingRoot
+    gameObject: {fileID: 2627210950818419203}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
   isAssetBundle: 1
 --- !u!223 &7097928347397599925
 Canvas:
@@ -357,6 +367,184 @@ MonoBehaviour:
   topOrLeftColor: {r: 1, g: 1, b: 1, a: 1}
   bottomOrRightColor: {r: 0, g: 0, b: 0, a: 1}
   direction: 0
+--- !u!1 &3983489262974157435
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 7
+  m_Component:
+  - component: {fileID: 7885646477864051440}
+  - component: {fileID: 7442270435311877263}
+  - component: {fileID: 2689759085273654747}
+  m_Layer: 0
+  m_HasEditorInfo: 1
+  m_Name: bg
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &7885646477864051440
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3983489262974157435}
+  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: 6873085262159349588}
+  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, y: 0}
+  m_SizeDelta: {x: 100, y: 9}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &7442270435311877263
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3983489262974157435}
+  m_CullTransparentMesh: 1
+--- !u!114 &2689759085273654747
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3983489262974157435}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3c247620ca3a1fd4ab2a2f3a5b287e07, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+  _icon_name: 
+  isNotLoadDeftIcon: 0
+  CurrSpriteAtlas: {fileID: 0}
+  packInfo:
+    packName: 
+    packgJsonPath: 
+    packgSpritePath: 
+    lasetJsonGUID: 
+  imageH: 100
+  useGradient: 0
+  topOrLeftColor: {r: 1, g: 1, b: 1, a: 1}
+  bottomOrRightColor: {r: 0, g: 0, b: 0, a: 1}
+  direction: 0
+--- !u!1 &4394557787295959954
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 7
+  m_Component:
+  - component: {fileID: 781368825157297458}
+  - component: {fileID: 2768628954572887385}
+  - component: {fileID: 4402566707673765052}
+  m_Layer: 0
+  m_HasEditorInfo: 1
+  m_Name: icon
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &781368825157297458
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4394557787295959954}
+  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: 6873085262159349588}
+  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: -49.999996, y: 0}
+  m_SizeDelta: {x: 100, y: 9}
+  m_Pivot: {x: 0, y: 0.5}
+--- !u!222 &2768628954572887385
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4394557787295959954}
+  m_CullTransparentMesh: 1
+--- !u!114 &4402566707673765052
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4394557787295959954}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 3c247620ca3a1fd4ab2a2f3a5b287e07, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.8773585, g: 0.8124416, b: 0.037246335, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 0}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+  _icon_name: 
+  isNotLoadDeftIcon: 0
+  CurrSpriteAtlas: {fileID: 0}
+  packInfo:
+    packName: 
+    packgJsonPath: 
+    packgSpritePath: 
+    lasetJsonGUID: 
+  imageH: 100
+  useGradient: 0
+  topOrLeftColor: {r: 1, g: 1, b: 1, a: 1}
+  bottomOrRightColor: {r: 0, g: 0, b: 0, a: 1}
+  direction: 0
 --- !u!1 &4541095957387626865
 GameObject:
   m_ObjectHideFlags: 0
@@ -385,7 +573,8 @@ RectTransform:
   m_LocalPosition: {x: 0, y: 0, z: 0}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_ConstrainProportionsScale: 0
-  m_Children: []
+  m_Children:
+  - {fileID: 6873085262159349588}
   m_Father: {fileID: 4256368909595512735}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0.5, y: 0.5}
@@ -627,6 +816,64 @@ MonoBehaviour:
   topOrLeftColor: {r: 1, g: 1, b: 1, a: 1}
   bottomOrRightColor: {r: 0, g: 0, b: 0, a: 1}
   direction: 0
+--- !u!1 &6569538894357456337
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 7
+  m_Component:
+  - component: {fileID: 6873085262159349588}
+  - component: {fileID: 9174005624641460436}
+  m_Layer: 5
+  m_HasEditorInfo: 1
+  m_Name: DuiPingWidget
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 0
+--- !u!224 &6873085262159349588
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6569538894357456337}
+  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:
+  - {fileID: 7885646477864051440}
+  - {fileID: 781368825157297458}
+  m_Father: {fileID: 2627210950818419203}
+  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, y: 0}
+  m_SizeDelta: {x: 100, y: 100}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &9174005624641460436
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6569538894357456337}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4810a0857c909354fa00c3aafdeac753, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  data:
+  - key: icon
+    gameObject: {fileID: 4402566707673765052}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
+  isAssetBundle: 1
 --- !u!1 &7012111750642037316
 GameObject:
   m_ObjectHideFlags: 0

+ 1 - 1
Assets/Resources/Shader/Shader Graphs_ShengShiShader.mat

@@ -66,5 +66,5 @@ Material:
     m_Colors:
     - _mainColor: {r: 0.21314356, g: 1.4060051, b: 2.1517377, a: 0}
     - _off: {r: 0.01, g: 0.01, b: 0, a: 0}
-    - _pos: {r: -1.8000001, g: -5.3999996, b: -30, a: 0}
+    - _pos: {r: 0, g: -5, b: -30, a: 0}
   m_BuildTextureStacks: []

File diff suppressed because it is too large
+ 414 - 467
Assets/Scenes/testCombat.scene


+ 8 - 0
Assets/Scripts/GameLogic/Combat/CombatEvent/CombatEventType.cs

@@ -118,6 +118,14 @@
         /// 功法碰撞完成2
         /// </summary>
         GongFaPengZhuangFinish2,
+        /// <summary>
+        /// 法宝对拼开始
+        /// </summary>
+        FaBaoDuiPingStart,
+        /// <summary>
+        /// 法宝对拼结束
+        /// </summary>
+        FaBaoDuiPingFinish,
 
     }
 }

+ 15 - 0
Assets/Scripts/GameLogic/Combat/CombatEvent/FaBaoDuiPingStartEventData.cs

@@ -0,0 +1,15 @@
+using Core.Utility.Event;
+using GameLogic.Combat.CombatTool;
+
+namespace Common.Utility.CombatEvent
+{
+    public class FaBaoDuiPingStartEventData : EventDataBasic<FaBaoDuiPingStartEventData>
+    {
+        public MagicWeaponCollisionInfo MagicWeaponCollisionInfo;
+
+        protected override void ProDispose()
+        {
+            MagicWeaponCollisionInfo = null;
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/CombatEvent/FaBaoDuiPingStartEventData.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7fb70cff03ba44d58c49651c809bc295
+timeCreated: 1757922186

+ 38 - 4
Assets/Scripts/GameLogic/Combat/CombatTool/CombatCalculateTool.cs

@@ -117,7 +117,6 @@ namespace GameLogic.Combat.CombatTool
                 return harmReturnInfo;
             }
 
-            
 
             float qiangDu = 100;
             SkillFeaturesData skillFeaturesData = skillFeatures as SkillFeaturesData;
@@ -129,9 +128,8 @@ namespace GameLogic.Combat.CombatTool
             harmReturnInfo.QiangDu = qiangDu;
             att = GetVlaueRatioForLong(att, qiangDu);
             float wuxing = source.CurrCombatHeroInfo.GetWuXingShuXing(WuXingType);
-    
 
-           
+
             // int index = GeWuXingTypeIndex(WuXingType);
             // WuXingType kzWuXing = Restrain[index];
             // float direnWuXing = target.combatHeroEntity.CurrCombatHeroInfo.GetWuXingShuXing(kzWuXing);
@@ -245,7 +243,6 @@ namespace GameLogic.Combat.CombatTool
             return harmReturnInfo;
         }
 
-      
 
         public ILifetCycleHitPoint[] GetMinHpHero(ILifetCycleHitPoint[] allLifetCycleHitPoints, int count)
         {
@@ -349,6 +346,43 @@ namespace GameLogic.Combat.CombatTool
             return c;
         }
 
+
+        public long GetFaBaoDuiPingMaxValue(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b)
+        {
+            CombatHeroEntity heroEntityA = a.RootMagicWeaponControl.combatHeroEntity;
+            CombatHeroEntity heroEntityB = b.RootMagicWeaponControl.combatHeroEntity;
+            int myRestrained = GetRestrained(a.WuXingType, b.WuXingType);
+            int targetRestrained = GetRestrained(b.WuXingType, a.WuXingType);
+            float lg_a = heroEntityA.CurrCombatHeroInfo.GetWuXingShuXing(a.WuXingType);
+            float lg_b = heroEntityB.CurrCombatHeroInfo.GetWuXingShuXing(b.WuXingType);
+            int c = myRestrained - targetRestrained;
+            long myHp = (long)(a.HpBl);
+            long targetHp = (long)(b.HpBl);
+
+            float p2 = 100;
+            if (c < 0) //a被压制
+            {
+                p2 = Mathf.Max(100, Mathf.Min(200, 30 + lg_b - lg_a));
+                targetHp = (long)(targetHp * p2);
+            }
+            else if (c > 0)
+            {
+                p2 = Mathf.Max(100, Mathf.Min(200, 30 + lg_a - lg_b));
+                myHp = (long)(myHp * p2);
+            }
+            a.HpBl= myHp;
+            b.HpBl= targetHp;
+            if (myHp > targetHp)
+            {
+                return targetHp;
+            }
+            else if (myHp < targetHp)
+            {
+                return myHp;
+            }
+            return targetHp;
+        }
+
         public void FaBaoPengZhuang(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b)
         {
             CombatHeroEntity heroEntityA = a.RootMagicWeaponControl.combatHeroEntity;

+ 76 - 68
Assets/Scripts/GameLogic/Combat/CombatTool/MagicWeaponCollisionInfo.cs

@@ -1,3 +1,4 @@
+using Common.Utility.CombatEvent;
 using Core.Audio;
 using Core.Triiger;
 using Core.Utility;
@@ -34,6 +35,9 @@ namespace GameLogic.Combat.CombatTool
         protected ParticleSystemPool ParticleSystemPool;
         private int triigerCount;
         private AudioSourcePool loopDuiPing;
+
+        private long _kouChuValue;
+
         public void Init(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b, int id)
         {
             this.id = id;
@@ -49,56 +53,6 @@ namespace GameLogic.Combat.CombatTool
             State = 0;
         }
 
-        private void OnTriggerEnter(Collider collider, ITriggerEntity triggerEntity)
-        {
-            // HeroEntityMono heroEntityMono = collider.GetComponent<HeroEntityMono>();
-            // if (heroEntityMono == null || (heroEntityMono.combatHeroEntity != b))
-            // {
-            //     return;
-            // }
-            //
-            // if (State != 1)
-            // {
-            //     return;
-            // }
-            //
-            // if (triigerCount >= 2)
-            // {
-            //     MagicWeaponPingDouState.MagicWeaponPingDouData rollingStateData =
-            //         CObjectPool.Instance.Fetch<MagicWeaponPingDouState.MagicWeaponPingDouData>();
-            //     rollingStateData.target = b;
-            //
-            //     a.CombatAIBasic.ChangeState(CombatHeroStateType.MagicWeaponPingDou,
-            //         rollingStateData);
-            //     MagicWeaponPingDouState.MagicWeaponPingDouData rollingStateData2 =
-            //         CObjectPool.Instance.Fetch<MagicWeaponPingDouState.MagicWeaponPingDouData>();
-            //     rollingStateData.target = a;
-            //     b.CombatAIBasic.ChangeState(CombatHeroStateType.MagicWeaponPingDou,
-            //         rollingStateData2);
-            //     State = 2;
-            //     _currTime = 0;
-            //     CombatController.currActiveCombat.GameTimeLineParticleFactory.CreateParticle("fx_fb_duipin_dian",
-            //         a.dotPos, null, false, null, delegate(ParticleSystemPool particleSystemPool)
-            //         {
-            //             particleSystemPool.transform.rotation =
-            //                 a.GameObject.transform.rotation;
-            //             ParticleSystemPool = particleSystemPool;
-            //         });
-            // }
-            // else
-            // {
-            //     CombatController.currActiveCombat.GameTimeLineParticleFactory.CreateParticle("fx_fb_duipin_hit",
-            //         collider.transform.position, null, false, null, delegate(ParticleSystemPool particleSystemPool)
-            //         {
-            //             particleSystemPool.transform.rotation =
-            //                 a.GameObject.transform.rotation;
-            //         });
-            //     triigerCount++;
-            //     // a.ReduceHp(40);
-            //     // _trigger = true;
-            //     // _triggerTime = 0.5f;
-            // }
-        }
 
         protected async void PongZhuang()
         {
@@ -122,8 +76,15 @@ namespace GameLogic.Combat.CombatTool
                 b.CombatAIBasic.ChangeState(CombatHeroStateType.MagicWeaponPingDou,
                     rollingStateData2);
                 State = 2;
+                long v = CombatCalculateTool.Instance.GetFaBaoDuiPingMaxValue(a, b);
+                _kouChuValue = v / 20;
                 _currTime = 0;
-                CombatController.currActiveCombat.CombatCameraControllder.Shaking(3,0.2f);
+                FaBaoDuiPingStartEventData faBaoDuiPingStartEventData =
+                    FaBaoDuiPingStartEventData.Create();
+                faBaoDuiPingStartEventData.MagicWeaponCollisionInfo = this;
+                CombatEventManager.Instance.Dispatch(CombatEventType.FaBaoDuiPingStart,
+                    faBaoDuiPingStartEventData);
+                CombatController.currActiveCombat.CombatCameraControllder.Shaking(3, 0.2f);
                 CombatController.currActiveCombat.GameTimeLineParticleFactory.CreateParticle("fx_fb_duipin_dian",
                     a.dotPos, null, false, null, delegate(ParticleSystemPool particleSystemPool)
                     {
@@ -135,11 +96,11 @@ namespace GameLogic.Combat.CombatTool
                             GObjectPool.Instance.Recycle(ParticleSystemPool);
                         }
                     });
-                loopDuiPing= await  AudioManager.Instance.PlayAudio("fb_duiping.wav", true);
+                loopDuiPing = await AudioManager.Instance.PlayAudio("fb_duiping.wav", true);
             }
             else
             {
-                CombatController.currActiveCombat.CombatCameraControllder.Shaking(0.3f,1f);
+                CombatController.currActiveCombat.CombatCameraControllder.Shaking(0.3f, 1f);
                 CombatController.currActiveCombat.GameTimeLineParticleFactory.CreateParticle("fx_fb_duipin_hit",
                     a.dotPos, null, false, null, delegate(ParticleSystemPool particleSystemPool)
                     {
@@ -156,7 +117,6 @@ namespace GameLogic.Combat.CombatTool
 
         protected void SetBesselA()
         {
-           
             _besselPathA = new BesselPath();
             _besselPathA.controlPoints.Add(a.dotPos);
             _besselPathA.controlPoints.Add(a.GameObject.transform.TransformPoint(new Vector3(-9.87f, 4, 2)));
@@ -226,7 +186,7 @@ namespace GameLogic.Combat.CombatTool
                         SetBesselB();
                     }
 
-                    _unRegister = a.GameObject.OnTriggerEnterEvent(this, OnTriggerEnter);
+                    // _unRegister = a.GameObject.OnTriggerEnterEvent(this, OnTriggerEnter);
                     _isOne = false;
                     _currTime = 0;
                 }
@@ -247,7 +207,6 @@ namespace GameLogic.Combat.CombatTool
                 b.GameObject.transform.rotation = Quaternion.LookRotation((b1 - b2).normalized);
                 if (_currTime > 0.48f)
                 {
-                   
                     PongZhuang();
                 }
 
@@ -261,30 +220,79 @@ namespace GameLogic.Combat.CombatTool
             else if (State == 2)
             {
                 _currTime += t;
-                if (_currTime > 2)
+                if (_currTime > 0.1f)
                 {
-                    if (loopDuiPing != null)
-                    {
-                        loopDuiPing.Finish();
-                        loopDuiPing = null;
-                    }
-                    AudioManager.Instance.PlayAudio("fb_duipingbaozha.wav", false);
-                    State = 3;
                     _currTime = 0;
-                    CombatController.currActiveCombat.CombatCameraControllder.Shaking(0.5f,2f);
-                    CombatCalculateTool.Instance.FaBaoPengZhuang(a, b);
+                    a.HpBl -= _kouChuValue;
+                    b.HpBl -= _kouChuValue;
+                    bool isFinish = false;
                     CombatMagicWeaponEntity combatMagicWeaponEntityA = a;
                     CombatMagicWeaponEntity combatMagicWeaponEntityB = b;
                     if (combatMagicWeaponEntityA.HpBl <= 0)
                     {
-                        combatMagicWeaponEntityA.MagicWeaponDie();
+                        isFinish = true;
                     }
 
                     if (combatMagicWeaponEntityB.HpBl <= 0)
                     {
-                        combatMagicWeaponEntityB.MagicWeaponDie();
+                        isFinish = true;
+                    }
+
+                    if (isFinish)
+                    {
+                        FaBaoDuiPingStartEventData faBaoDuiPingStartEventData =
+                            FaBaoDuiPingStartEventData.Create();
+                        faBaoDuiPingStartEventData.MagicWeaponCollisionInfo = this;
+                        CombatEventManager.Instance.Dispatch(CombatEventType.FaBaoDuiPingFinish,
+                            faBaoDuiPingStartEventData);
+                        if (combatMagicWeaponEntityA.HpBl <= 0)
+                        {
+                            combatMagicWeaponEntityA.MagicWeaponDie();
+                        }
+
+                        if (combatMagicWeaponEntityB.HpBl <= 0)
+                        {
+                            combatMagicWeaponEntityB.MagicWeaponDie();
+                        }
+
+                        if (loopDuiPing != null)
+                        {
+                            loopDuiPing.Finish();
+                            loopDuiPing = null;
+                        }
+
+                        AudioManager.Instance.PlayAudio("fb_duipingbaozha.wav", false);
+                        State = 3;
+                        _currTime = 0;
+                        CombatController.currActiveCombat.CombatCameraControllder.Shaking(0.5f, 2f);
                     }
                 }
+                //
+                // if (_currTime > 2)
+                // {
+                //     if (loopDuiPing != null)
+                //     {
+                //         loopDuiPing.Finish();
+                //         loopDuiPing = null;
+                //     }
+                //
+                //     AudioManager.Instance.PlayAudio("fb_duipingbaozha.wav", false);
+                //     State = 3;
+                //     _currTime = 0;
+                //     CombatController.currActiveCombat.CombatCameraControllder.Shaking(0.5f, 2f);
+                //
+                //     CombatMagicWeaponEntity combatMagicWeaponEntityA = a;
+                //     CombatMagicWeaponEntity combatMagicWeaponEntityB = b;
+                //     if (combatMagicWeaponEntityA.HpBl <= 0)
+                //     {
+                //         combatMagicWeaponEntityA.MagicWeaponDie();
+                //     }
+                //
+                //     if (combatMagicWeaponEntityB.HpBl <= 0)
+                //     {
+                //         combatMagicWeaponEntityB.MagicWeaponDie();
+                //     }
+                // }
             }
         }
 

+ 2 - 0
Assets/Scripts/GameLogic/Combat/Hero/CombatMagicWeaponEntity.cs

@@ -49,6 +49,7 @@ namespace GameLogic.Combat.Hero
             set { _HpBl = value; }
         }
 
+        public float MaxHp;
         private float _HpBl = 100;
 
         public int useIndex;
@@ -206,6 +207,7 @@ namespace GameLogic.Combat.Hero
 
 
             _HpBl = _faBaoInfo.FabaoPowerupConfig.Power;
+            MaxHp= _HpBl;
             cd = MaxCd;
 
             _rootMagicWeaponControl.UseMagicWeapon(this);

+ 54 - 70
Assets/Scripts/GameUI/UI/CombatPanel/CombatHPPanel.cs

@@ -1,3 +1,4 @@
+using System.Collections.Generic;
 using Common.Utility.CombatEvent;
 using Fort23.Core;
 using GameLogic.Combat.Hero;
@@ -13,6 +14,9 @@ namespace Fort23.Mono
 
         private CombatHeroEntity heroFocusEnemy;
 
+
+        private List<DuiPingWidget> _duiPingWidgets = new List<DuiPingWidget>();
+
         public static async CTask OpenCombatHPPanel()
         {
             await UIManager.Instance.LoadAndOpenPanel<CombatHPPanel>(null, UILayer.Bottom);
@@ -32,6 +36,8 @@ namespace Fort23.Mono
         protected override void AddEvent()
         {
             CombatEventManager.Instance.AddEventListener(CombatEventType.TargetAlter, AlaterTargetFocus);
+            CombatEventManager.Instance.AddEventListener(CombatEventType.FaBaoDuiPingStart, FaBaoDuiPingStart);
+            CombatEventManager.Instance.AddEventListener(CombatEventType.FaBaoDuiPingFinish, FaBaoDuiPingFinish);
             EventManager.Instance.AddEventListener(CustomEventType.CreateHeroHp, CreateHeroHp);
             StaticUpdater.Instance.AddRenderUpdateCallBack(Update);
             TargetFocus.gameObject.SetActive(false);
@@ -40,81 +46,19 @@ namespace Fort23.Mono
 
         protected override void DelEvent()
         {
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.FaBaoDuiPingFinish, FaBaoDuiPingFinish);
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.FaBaoDuiPingStart, FaBaoDuiPingStart);
             EventManager.Instance.RemoveEventListener(CustomEventType.CreateHeroHp, CreateHeroHp);
             StaticUpdater.Instance.RemoveRenderUpdateCallBack(Update);
             // CombatEventManager.Instance.RemoveEventListener(CombatEventType.TargetAlter, TargetAlter);
             CombatEventManager.Instance.RemoveEventListener(CombatEventType.TargetAlter, AlaterTargetFocus);
         }
 
+
         public override void AddButtonEvent()
         {
         }
 
-        // private async void TargetAlter(IEventData iEventData)
-        // {
-        //     CombatHeroTargetAlterEventData combatHeroTargetAlterEventData =
-        //         iEventData as CombatHeroTargetAlterEventData;
-        //     if (combatHeroTargetAlterEventData.combatHeroEntity.IsEnemy)
-        //     {
-        //         return;
-        //     }
-        //
-        //     if (combatHeroTargetAlterEventData.targetCombatHeroEntity != null)
-        //     {
-        //         CombatHeroEntity t = combatHeroTargetAlterEventData.targetCombatHeroEntity as CombatHeroEntity;
-        //         if (t != null)
-        //         {
-        //             if (t.CurrCombatHeroInfo.heroType == 4||t.CurrCombatHeroInfo.heroType ==3)
-        //             {
-        //                 return;
-        //             }
-        //
-        //             if (!currTargetHeroHp.TryGetValue(combatHeroTargetAlterEventData.targetCombatHeroEntity,
-        //                     out int count))
-        //             {
-        //             }
-        //
-        //             if (count <= 0)
-        //             {
-        //                 CreateHpUI(t);
-        //             }
-        //
-        //             count++;
-        //             currTargetHeroHp[t] = count;
-        //         }
-        //     }
-        //
-        //     if (combatHeroTargetAlterEventData.lasetCombatHeroEntity != null)
-        //     {
-        //         CombatHeroEntity t = combatHeroTargetAlterEventData.lasetCombatHeroEntity as CombatHeroEntity;
-        //       
-        //         if (t != null)
-        //         {
-        //             if (t.CurrCombatHeroInfo.heroType == 4||t.CurrCombatHeroInfo.heroType ==3)
-        //             {
-        //                 return;
-        //             }
-        //             if (currTargetHeroHp.TryGetValue(combatHeroTargetAlterEventData.lasetCombatHeroEntity,
-        //                     out int count))
-        //             {
-        //                 count--;
-        //                 if (count <= 0)
-        //                 {
-        //                     currTargetHeroHp.Remove(combatHeroTargetAlterEventData.lasetCombatHeroEntity);
-        //                     HeroHpUpdateEventData heroHpUpdateEventData = HeroHpUpdateEventData.Create();
-        //                     heroHpUpdateEventData.combatHeroEntity = t;
-        //                     CombatEventManager.Instance.Dispatch(CombatEventType.ClearHeroHp, heroHpUpdateEventData);
-        //                 }
-        //                 else
-        //                 {
-        //                     currTargetHeroHp[t] = count;
-        //                 }
-        //
-        //                
-        //             }
-        //         }
-        //     }
-        // }
 
         private async void CreateHpUI(CombatHeroEntity combatHeroEntity)
         {
@@ -125,17 +69,50 @@ namespace Fort23.Mono
             heroHpWidget.Init(combatHeroEntity);
         }
 
+        private async void FaBaoDuiPingStart(IEventData iEventData)
+        {
+            FaBaoDuiPingStartEventData faBaoDuiPingStartEventData = iEventData as FaBaoDuiPingStartEventData;
+
+            DuiPingWidget widget = await UIManager.Instance.CreateGComponentForObject<DuiPingWidget>(DuiPingWidget,
+                null, transform,
+                isInstance: true);
+            widget.ShowWidget(faBaoDuiPingStartEventData.MagicWeaponCollisionInfo.a);
+            _duiPingWidgets.Add(widget);
+            widget = await UIManager.Instance.CreateGComponentForObject<DuiPingWidget>(DuiPingWidget, null, transform,
+                isInstance: true);
+            widget.ShowWidget(faBaoDuiPingStartEventData.MagicWeaponCollisionInfo.b);
+            _duiPingWidgets.Add(widget);
+        }
+
+        private async void FaBaoDuiPingFinish(IEventData iEventData)
+        {
+            FaBaoDuiPingStartEventData faBaoDuiPingStartEventData = iEventData as FaBaoDuiPingStartEventData;
+
+            for (int i = 0; i < _duiPingWidgets.Count; i++)
+            {
+                if (_duiPingWidgets[i].combatMagicWeaponEntity ==
+                    faBaoDuiPingStartEventData.MagicWeaponCollisionInfo.a ||
+                    _duiPingWidgets[i].combatMagicWeaponEntity == faBaoDuiPingStartEventData.MagicWeaponCollisionInfo.b)
+                {
+                    UIManager.Instance.DormancyGComponent(_duiPingWidgets[i]);
+                    _duiPingWidgets.RemoveAt(i);
+                    i--;
+                }
+            }
+        }
+
         private void AlaterTargetFocus(IEventData iEventData)
         {
-            CombatHeroTargetAlterEventData combatHeroTargetAlterEventData = iEventData as CombatHeroTargetAlterEventData;
-            CombatHeroEntity combatHeroEntity=  combatHeroTargetAlterEventData.combatHeroEntity as CombatHeroEntity;
-            if (!combatHeroEntity.isPlayer||combatHeroTargetAlterEventData.targetCombatHeroEntity == heroFocusEnemy)
+            CombatHeroTargetAlterEventData combatHeroTargetAlterEventData =
+                iEventData as CombatHeroTargetAlterEventData;
+            CombatHeroEntity combatHeroEntity = combatHeroTargetAlterEventData.combatHeroEntity as CombatHeroEntity;
+            if (!combatHeroEntity.isPlayer || combatHeroTargetAlterEventData.targetCombatHeroEntity == heroFocusEnemy)
             {
                 return;
             }
 
             heroFocusEnemy = combatHeroTargetAlterEventData.targetCombatHeroEntity as CombatHeroEntity;
-            TargetFocus.gameObject.SetActive(heroFocusEnemy!=null);
+            TargetFocus.gameObject.SetActive(heroFocusEnemy != null);
             UpdateFocusUI();
         }
 
@@ -157,6 +134,7 @@ namespace Fort23.Mono
             {
                 return;
             }
+
             Vector3 worldPos = heroFocusEnemy.combatHeroGameObject.hpTransform.position;
             Vector3 p = UIManager.Instance.CurrCustomCameraStack.camera.WorldToScreenPoint(worldPos);
             Vector3 p2 = UIManager.Instance.UICamera.ScreenToWorldPoint(p);
@@ -166,17 +144,23 @@ namespace Fort23.Mono
                 pos = new Vector3(0, 0.1f, 0);
             }
 
-            TargetFocus.position = p2+pos;
+            TargetFocus.position = p2 + pos;
         }
 
         public void Update()
         {
             UpdateFocusUI();
+            for (int i = 0; i < _duiPingWidgets.Count; i++)
+            {
+                _duiPingWidgets[i].UpdateHp();
+            }
         }
 
         public override void Close()
         {
+            _duiPingWidgets.Clear();
             UIManager.Instance.DormancyAllGComponent<HeroHpWidget>();
+            UIManager.Instance.DormancyAllGComponent<DuiPingWidget>();
             base.Close();
         }
     }

+ 22 - 0
Assets/Scripts/GameUI/UI/CombatPanel/CombatHPPanelData.cs

@@ -30,6 +30,28 @@ namespace Fort23.Mono
 	      return _TargetFocus;
 	     }
 	   }
+	  private GameObject _DuiPingWidget;
+	  public GameObject DuiPingWidget
+	   {
+	   get{
+	      if (_DuiPingWidget == null)
+	       {
+	         _DuiPingWidget  = GetUIUnit<GameObject>("DuiPingWidget"); 
+	       }
+	      return _DuiPingWidget;
+	     }
+	   }
+	  private RectTransform _FbDuiPingRoot;
+	  public RectTransform FbDuiPingRoot
+	   {
+	   get{
+	      if (_FbDuiPingRoot == null)
+	       {
+	         _FbDuiPingRoot  = GetUIUnit<RectTransform>("FbDuiPingRoot"); 
+	       }
+	      return _FbDuiPingRoot;
+	     }
+	   }
 	  #endregion 自定义数据结束 
 	 public override async CTask SetUIGameObject(GameObject gObjectPoolInterface)
 	{

+ 57 - 0
Assets/Scripts/GameUI/UI/CombatPanel/DuiPingWidget.cs

@@ -0,0 +1,57 @@
+using Common.Utility.CombatEvent;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+
+namespace Fort23.Mono
+{
+    [UIBinding(prefab = "DuiPingWidget")]
+    public partial class DuiPingWidget : UIComponent
+    {
+        public CombatMagicWeaponEntity combatMagicWeaponEntity;
+        private RectTransform rectTransform;
+
+        private void Init()
+        {
+        }
+
+        public override void AddEvent()
+        {
+        }
+
+        public override void DelEvent()
+        {
+        }
+
+        public override void AddButtonEvent()
+        {
+            rectTransform = icon.GetComponent<RectTransform>();
+            rectTransform.sizeDelta = new Vector2(100, 9);
+        }
+
+        public void ShowWidget(CombatMagicWeaponEntity combatMagicWeaponEntity)
+        {
+            this.combatMagicWeaponEntity = combatMagicWeaponEntity;
+            Vector3 offPos = new Vector3(0, 0);
+            if (this.combatMagicWeaponEntity.IsEnemy)
+            {
+                offPos = new Vector3(0, 2);
+            }
+            else
+            {
+                offPos = new Vector3(0, -2);
+            }
+
+          
+            Vector3 worldPos = combatMagicWeaponEntity.GameObject.transform.position + offPos;
+            Vector3 p = UIManager.Instance.CurrCustomCameraStack.camera.WorldToScreenPoint(worldPos);
+            Vector3 p2 = UIManager.Instance.UICamera.ScreenToWorldPoint(p);
+            transform.position = p2;
+        }
+
+        public void UpdateHp()
+        {
+            float bl = combatMagicWeaponEntity.HpBl / combatMagicWeaponEntity.MaxHp;
+            rectTransform.sizeDelta = new Vector2(100 * bl, 9);
+        }
+    }
+}

+ 11 - 0
Assets/Scripts/GameUI/UI/CombatPanel/DuiPingWidget.cs.meta

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

+ 29 - 0
Assets/Scripts/GameUI/UI/CombatPanel/DuiPingWidgetData.cs

@@ -0,0 +1,29 @@
+using Fort23.Core;
+using Fort23.UTool;
+using UnityEngine.UI;
+using UnityEngine;
+using System.Collections.Generic;
+namespace Fort23.Mono
+{
+	public partial class DuiPingWidget 
+	{
+	  #region 自定义数据 
+	  private MyImage _icon;
+	  public MyImage icon
+	   {
+	   get{
+	      if (_icon == null)
+	       {
+	         _icon  = GetUIUnit<MyImage>("icon"); 
+	       }
+	      return _icon;
+	     }
+	   }
+	  #endregion 自定义数据结束 
+	 public override async CTask SetUIGameObject(GameObject gObjectPoolInterface)
+	{
+	 await base.SetUIGameObject(gObjectPoolInterface);
+	 Init();
+	}
+	}
+}

+ 11 - 0
Assets/Scripts/GameUI/UI/CombatPanel/DuiPingWidgetData.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: XXsa4y/4AH/yyXTWGKi3YEcpCrBE9bh632/otK17M0tHpKK2DbJY0n1dXN5j
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

Some files were not shown because too many files changed in this diff