DESKTOP-FB72PO8\Administrator 3 hónapja
szülő
commit
36e71e79c7

+ 1 - 1
Assets/Art/VFX/FXMeshs/shan/New Material 1.mat

@@ -102,7 +102,7 @@ Material:
     - _GlossMapScale: 0
     - _Glossiness: 0
     - _GlossyReflections: 0
-    - _H: 1
+    - _H: 0.83
     - _Metallic: 0
     - _OcclusionStrength: 1
     - _Parallax: 0.005

+ 1 - 1
Assets/Art/VFX/FXMeshs/shan/New Material.mat

@@ -102,7 +102,7 @@ Material:
     - _GlossMapScale: 0
     - _Glossiness: 0
     - _GlossyReflections: 0
-    - _H: -2.96
+    - _H: 0.83
     - _Metallic: 0
     - _OcclusionStrength: 1
     - _Parallax: 0.005

+ 3 - 0
Assets/Res/LevelSecne/LevelBattle1.prefab

@@ -62,6 +62,7 @@ MeshRenderer:
   m_RayTraceProcedural: 0
   m_virtualGeometry: 0
   m_virtualGeometryShadow: 0
+  m_ShadingRate: 0
   m_RenderingLayerMask: 1
   m_RendererPriority: 0
   m_Materials:
@@ -171,6 +172,7 @@ MeshRenderer:
   m_RayTraceProcedural: 0
   m_virtualGeometry: 0
   m_virtualGeometryShadow: 0
+  m_ShadingRate: 0
   m_RenderingLayerMask: 1
   m_RendererPriority: 0
   m_Materials:
@@ -473,6 +475,7 @@ MeshRenderer:
   m_RayTraceProcedural: 0
   m_virtualGeometry: 0
   m_virtualGeometryShadow: 0
+  m_ShadingRate: 0
   m_RenderingLayerMask: 4294967295
   m_RendererPriority: 0
   m_Materials:

+ 105 - 1
Assets/Scenes/testCombat.scene

@@ -949,7 +949,10 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
     m_RemovedGameObjects: []
-    m_AddedGameObjects: []
+    m_AddedGameObjects:
+    - targetCorrespondingSourceObject: {fileID: 5358946683605546402, guid: 3e2adcc225c13154daa6652991cc58db, type: 3}
+      insertIndex: 2
+      addedObject: {fileID: 1492765096}
     m_AddedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 3e2adcc225c13154daa6652991cc58db, type: 3}
 --- !u!1001 &461893080
@@ -1149,6 +1152,7 @@ MeshRenderer:
   m_RayTraceProcedural: 0
   m_virtualGeometry: 0
   m_virtualGeometryShadow: 0
+  m_ShadingRate: 0
   m_RenderingLayerMask: 1
   m_RendererPriority: 0
   m_Materials:
@@ -1182,6 +1186,11 @@ MeshFilter:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 535912257}
   m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &643014206 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 5358946683605546402, guid: 3e2adcc225c13154daa6652991cc58db, type: 3}
+  m_PrefabInstance: {fileID: 449550614}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1 &753442135
 GameObject:
   m_ObjectHideFlags: 0
@@ -1535,6 +1544,7 @@ MeshRenderer:
   m_RayTraceProcedural: 0
   m_virtualGeometry: 0
   m_virtualGeometryShadow: 0
+  m_ShadingRate: 0
   m_RenderingLayerMask: 1
   m_RendererPriority: 0
   m_Materials:
@@ -1771,6 +1781,100 @@ MonoBehaviour:
   m_OnValueChanged:
     m_PersistentCalls:
       m_Calls: []
+--- !u!1001 &1373452003
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    serializedVersion: 3
+    m_TransformParent: {fileID: 643014206}
+    m_Modifications:
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalScale.x
+      value: 0.7017995
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalScale.y
+      value: 0.7017995
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalScale.z
+      value: 0.91409373
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 5.4
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: -3.72
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 22.98
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: -0.56582814
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0.56582814
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0.4240737
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: 0.4240737
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: -90
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 286.299
+      objectReference: {fileID: 0}
+    - target: {fileID: 6234654564258816952, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_CastShadows
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 6234654564258816952, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_Materials.Array.data[0]
+      value: 
+      objectReference: {fileID: 2100000, guid: 606198080c63f6248aa7119c3ad67bfc, type: 2}
+    - target: {fileID: 6234654564258816952, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_Materials.Array.data[1]
+      value: 
+      objectReference: {fileID: 2100000, guid: 606198080c63f6248aa7119c3ad67bfc, type: 2}
+    - target: {fileID: 8263401684857855702, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_Name
+      value: shan1 (8)
+      objectReference: {fileID: 0}
+    - target: {fileID: 8263401684857855702, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_Layer
+      value: 10
+      objectReference: {fileID: 0}
+    - target: {fileID: 8263401684857855702, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+      propertyPath: m_TagString
+      value: dimian
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+    m_RemovedGameObjects: []
+    m_AddedGameObjects: []
+    m_AddedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+--- !u!4 &1492765096 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 1727388020353400437, guid: a445053e76baa4740a148b2a7e0c84ae, type: 3}
+  m_PrefabInstance: {fileID: 1373452003}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1001 &6588466611375917160
 PrefabInstance:
   m_ObjectHideFlags: 0

+ 48 - 19
Assets/Scripts/GameLogic/Combat/CombatTool/MagicWeaponCollisionInfo.cs

@@ -1,4 +1,5 @@
 using Fort23.Core;
+using Fort23.UTool;
 using GameLogic.Combat.Hero;
 using GameLogic.Combat.Hero.State;
 
@@ -9,26 +10,59 @@ namespace GameLogic.Combat.CombatTool
         public CombatMagicWeaponEntity a;
         public CombatMagicWeaponEntity b;
 
+        public int id;
         protected float _currTime;
 
+        /// <summary>
+        /// 状态 0=等待状态 1=飞行状态 2=碰撞状态
+        /// </summary>
+        public int State;
+
+        public void Init(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b,int id)
+        {
+            this.id = id;
+            this.a = a;
+            this.b = b;
+            a.MagicWeaponCollisionId = id;
+            b.MagicWeaponCollisionId = id;
+            State = 0;
+        }
+
         public void Update(float t)
         {
-            _currTime += t;
-            if (_currTime > 0.1f)
+            if (State == 0)
             {
-                _currTime = 0;
-                if (a != null)
+                if (a.CombatAIBasic.stateControl.CurrStateName.Equals(CombatHeroStateType.idle) &&
+                    b.CombatAIBasic.stateControl.CurrStateName.Equals(CombatHeroStateType.idle))
                 {
-                    a.ReduceHp(1);
+                    State = 1;
                 }
+            }
 
-                if (b != null)
+            if (State == 2)
+            {
+                _currTime += t;
+                if (_currTime > 0.1f)
                 {
-                    b.ReduceHp(1);
+                    _currTime = 0;
+                    if (a != null)
+                    {
+                        a.ReduceHp(1);
+                    }
+
+                    if (b != null)
+                    {
+                        b.ReduceHp(1);
+                    }
                 }
             }
         }
 
+        public void SetState(int state)
+        {
+            State = state;
+        }
+
         public override void ActiveObj()
         {
         }
@@ -41,24 +75,19 @@ namespace GameLogic.Combat.CombatTool
 
         public void Finish()
         {
+            LogTool.Log("碰撞完成");
             if (a.HpBl > 0)
             {
-                MagicWeaponMoveState.MagicWeaponMoveStateData magicWeaponMoveStateData =
-                    CObjectPool.Instance.Fetch<MagicWeaponMoveState.MagicWeaponMoveStateData>();
-                magicWeaponMoveStateData.trigger = true;
-                magicWeaponMoveStateData.triggerTime = 0.5f;
-                a.CombatAIBasic.ChangeState(CombatHeroStateType.move,magicWeaponMoveStateData);
-                CObjectPool.Instance.Recycle(magicWeaponMoveStateData);
+                a.CombatAIBasic.ChangeState(CombatHeroStateType.att);
+                a.MagicWeaponCollisionId = -1;
+                b.MagicWeaponCollisionId = -1;
             }
 
             if (b.HpBl > 0)
             {
-                MagicWeaponMoveState.MagicWeaponMoveStateData magicWeaponMoveStateData =
-                    CObjectPool.Instance.Fetch<MagicWeaponMoveState.MagicWeaponMoveStateData>();
-                magicWeaponMoveStateData.trigger = true;
-                magicWeaponMoveStateData.triggerTime = 0.5f;
-                b.CombatAIBasic.ChangeState(CombatHeroStateType.move,magicWeaponMoveStateData);
-                CObjectPool.Instance.Recycle(magicWeaponMoveStateData);
+                b.CombatAIBasic.ChangeState(CombatHeroStateType.att);
+                a.MagicWeaponCollisionId = -1;
+                b.MagicWeaponCollisionId = -1;
             }
         }
     }

+ 57 - 30
Assets/Scripts/GameLogic/Combat/CombatTool/MagicWeaponCombatSence.cs

@@ -4,6 +4,7 @@ using Fort23.Core;
 using GameLogic.Combat.Hero;
 using GameLogic.Combat.Hero.State;
 using UnityEngine;
+using Utility;
 
 namespace GameLogic.Combat.CombatTool
 {
@@ -15,7 +16,7 @@ namespace GameLogic.Combat.CombatTool
         private BetterList<CombatMagicWeaponEntity> _enemyMagicWeaponList = new BetterList<CombatMagicWeaponEntity>();
         private BetterList<CombatMagicWeaponEntity> _playerMagicWeaponList = new BetterList<CombatMagicWeaponEntity>();
 
-       
+
         /// <summary>
         /// 战斗包围盒 minX miny maxx maxy
         /// </summary>
@@ -31,8 +32,10 @@ namespace GameLogic.Combat.CombatTool
         /// </summary>
         public Vector3 enemyEnterCombatPos;
 
-        private BetterList<MagicWeaponCollisionInfo> magicWeaponCollisionInfoList =
-            new BetterList<MagicWeaponCollisionInfo>();
+        private Map<int, MagicWeaponCollisionInfo> magicWeaponCollisionInfoList =
+            new Map<int, MagicWeaponCollisionInfo>();
+
+        private int MagicWeaponCollisionID;
 
         public void Init()
         {
@@ -46,20 +49,13 @@ namespace GameLogic.Combat.CombatTool
                 heroDieEventData.combatHeroEntity as CombatMagicWeaponEntity;
             _enemyMagicWeaponList.Remove(combatMagicWeaponEntity);
             _playerMagicWeaponList.Remove(combatMagicWeaponEntity);
-            for (int i = 0; i < magicWeaponCollisionInfoList.Count; i++)
-            {
-                if (magicWeaponCollisionInfoList[i].a == combatMagicWeaponEntity ||
-                    magicWeaponCollisionInfoList[i].b == combatMagicWeaponEntity)
-                {
-                    RemoveCollisionMagicWeapon(magicWeaponCollisionInfoList[i]);
-                }
-            }
+            RemoveCollisionMagicWeapon(combatMagicWeaponEntity.MagicWeaponCollisionId);
         }
 
         public void SetMagicWeaponCombatSence(Vector3 myHeroPos, Vector3 fangXiang)
         {
             myEnterCombatPos = myHeroPos + fangXiang * 2 + new Vector3(0, 10, 0);
-            myEnterCombatPos = myHeroPos + fangXiang * 18 + new Vector3(0, 10, 0);
+            enemyEnterCombatPos = myHeroPos + fangXiang * 18 + new Vector3(0, 10, 0);
         }
 
         /// <summary>
@@ -71,20 +67,20 @@ namespace GameLogic.Combat.CombatTool
             if (combatMagicWeaponEntity.IsEnemy)
             {
                 _enemyMagicWeaponList.Add(combatMagicWeaponEntity);
-                combatMagicWeaponEntity.useIndex= _enemyMagicWeaponList.Count;
+                combatMagicWeaponEntity.useIndex = _enemyMagicWeaponList.Count;
             }
             else
             {
                 _playerMagicWeaponList.Add(combatMagicWeaponEntity);
-                combatMagicWeaponEntity.useIndex= _playerMagicWeaponList.Count;
+                combatMagicWeaponEntity.useIndex = _playerMagicWeaponList.Count;
             }
 
+            FindCollidingTarget(combatMagicWeaponEntity);
             combatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.Active);
         }
 
-        public void TriggerMagicWeapon(CombatMagicWeaponEntity a,CombatMagicWeaponEntity b)
+        public void TriggerMagicWeapon(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b)
         {
-            
         }
 
         public void Update(float t)
@@ -98,32 +94,47 @@ namespace GameLogic.Combat.CombatTool
             // {
             //     _playerMagicWeaponList[i].Update(t);
             // }
+            for (magicWeaponCollisionInfoList.Begin(); magicWeaponCollisionInfoList.Next();)
+            {
+                magicWeaponCollisionInfoList.Value.Update(t);
+            }
+        }
 
-            for (int i = 0; i < magicWeaponCollisionInfoList.Count; i++)
+        public MagicWeaponCollisionInfo FindMagicWeaponCollisionInfo(int id)
+        {
+            if (magicWeaponCollisionInfoList.TryGetValue(id, out var info))
             {
-                magicWeaponCollisionInfoList[i].Update(t);
+                return info;
             }
+
+            return null;
         }
 
-        public CombatMagicWeaponEntity FindCollidingTarget(CombatMagicWeaponEntity combatMagicWeaponEntity)
+        private void FindCollidingTarget(CombatMagicWeaponEntity combatMagicWeaponEntity)
         {
             bool isEnemy = combatMagicWeaponEntity.IsEnemy;
             BetterList<CombatMagicWeaponEntity> magicWeaponList =
                 isEnemy ? _playerMagicWeaponList : _enemyMagicWeaponList;
             if (magicWeaponList == null)
             {
-                return null;
+                return;
             }
 
             List<CombatMagicWeaponEntity> nullTarget = new List<CombatMagicWeaponEntity>();
             for (int i = 0; i < magicWeaponList.Count; i++)
             {
-                if (magicWeaponList[i].CollidingTarget == combatMagicWeaponEntity)
+                if (magicWeaponList[i].CombatAIBasic.stateControl.CurrStateName != CombatHeroStateType.idle &&
+                    magicWeaponList[i].CombatAIBasic.stateControl.CurrStateName != CombatHeroStateType.Active)
                 {
-                    return magicWeaponList[i];
+                    continue;
                 }
 
-                if (magicWeaponList[i].CollidingTarget == null)
+                // if (magicWeaponList[i].CollidingTarget == combatMagicWeaponEntity)
+                // {
+                //     return magicWeaponList[i];
+                // }
+
+                if (magicWeaponList[i].MagicWeaponCollisionId < 0)
                 {
                     nullTarget.Add(magicWeaponList[i]);
                 }
@@ -132,10 +143,15 @@ namespace GameLogic.Combat.CombatTool
             if (nullTarget.Count > 0)
             {
                 int index = CombatCalculateTool.Instance.GetOdd(0, nullTarget.Count);
-                return nullTarget[index];
+                CombatMagicWeaponEntity target = nullTarget[index];
+                MagicWeaponCollisionInfo magicWeaponCollisionInfo =
+                    CObjectPool.Instance.Fetch<MagicWeaponCollisionInfo>();
+                magicWeaponCollisionInfo.Init(combatMagicWeaponEntity, target, MagicWeaponCollisionID);
+                magicWeaponCollisionInfoList.Add(MagicWeaponCollisionID, magicWeaponCollisionInfo);
+                MagicWeaponCollisionID++;
             }
 
-            return null;
+            return;
         }
 
         public void AddCollisionMagicWeapon(CombatMagicWeaponEntity a, CombatMagicWeaponEntity b)
@@ -151,15 +167,26 @@ namespace GameLogic.Combat.CombatTool
             rollingStateData.target = a;
             b.CombatAIBasic.ChangeState(CombatHeroStateType.MagicWeaponPingDou,
                 rollingStateData2);
-            MagicWeaponCollisionInfo magicWeaponCollisionInfo = CObjectPool.Instance.Fetch<MagicWeaponCollisionInfo>();
-            magicWeaponCollisionInfo.a = a;
-            magicWeaponCollisionInfo.b = b;
-            magicWeaponCollisionInfoList.Add(magicWeaponCollisionInfo);
+            magicWeaponCollisionInfoList[a.MagicWeaponCollisionId].SetState(2);
+            // MagicWeaponCollisionInfo magicWeaponCollisionInfo = CObjectPool.Instance.Fetch<MagicWeaponCollisionInfo>();
+            // magicWeaponCollisionInfo.a = a;
+            // magicWeaponCollisionInfo.b = b;
+            // magicWeaponCollisionInfoList.Add(magicWeaponCollisionInfo);
+        }
+
+        public void RemoveCollisionMagicWeapon(int id)
+        {
+            magicWeaponCollisionInfoList.Remove(id, out var collisionInfo);
+            if (collisionInfo != null)
+            {
+                collisionInfo.Finish();
+                CObjectPool.Instance.Recycle(collisionInfo);
+            }
         }
 
         public void RemoveCollisionMagicWeapon(MagicWeaponCollisionInfo collisionInfo)
         {
-            magicWeaponCollisionInfoList.Remove(collisionInfo);
+            magicWeaponCollisionInfoList.Remove(collisionInfo.id);
             collisionInfo.Finish();
             CObjectPool.Instance.Recycle(collisionInfo);
         }

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

@@ -4,6 +4,7 @@ using Excel2Json;
 using Fort23.Core;
 using Fort23.UTool;
 using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
 using GameLogic.Combat.Hero.State;
 using UnityEngine;
 using UnityEngine.AI;
@@ -21,6 +22,7 @@ namespace GameLogic.Combat.Hero
         /// </summary>
         public CombatMagicWeaponEntity CollidingTarget;
 
+        public int MagicWeaponCollisionId=-1;
         protected MagicWeaponConfig _magicWeaponConfig;
         public float cd = 2;
 

+ 1 - 0
Assets/Scripts/GameLogic/Combat/Hero/MagicWeaponAi.cs

@@ -16,6 +16,7 @@ namespace GameLogic.Combat.Hero
             stateControl.AddState(CombatHeroStateType.move, new MagicWeaponMoveState(_showBaiscEntity));
             stateControl.AddState(CombatHeroStateType.MagicWeaponPingDou, new MagicWeaponPingDouState(_showBaiscEntity));
             stateControl.AddState(CombatHeroStateType.Active, new MagicWeaponChuChangState(_showBaiscEntity));
+            stateControl.AddState(CombatHeroStateType.att, new MagicWeaponAttState(_showBaiscEntity));
             
         }
 

+ 27 - 0
Assets/Scripts/GameLogic/Combat/Hero/State/MagicWeaponAttState.cs

@@ -0,0 +1,27 @@
+using Common.Utility.CombatEvent;
+
+namespace GameLogic.Combat.Hero.State
+{
+    public class MagicWeaponAttState : CombatHeroStateBasic
+    {
+        private CombatMagicWeaponEntity myCombatMagicWeaponEntity;
+
+        public MagicWeaponAttState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
+        {
+            myCombatMagicWeaponEntity = combatHeroEntity as CombatMagicWeaponEntity;
+        }
+
+        /// <summary>
+        /// 开始攻击
+        /// </summary>
+        protected override void ProEnter()
+        {
+            HeroDieEventData heroDieEventData = HeroDieEventData.Create();
+            heroDieEventData.combatHeroEntity = myCombatMagicWeaponEntity;
+            CombatEventManager.Instance.Dispatch(CombatEventType.MagicWeaponDie,
+                heroDieEventData);
+
+            myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.XiuMian);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Hero/State/MagicWeaponAttState.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 06ee2eb091284c0d8b0c48379593b649
+timeCreated: 1741143230

+ 13 - 11
Assets/Scripts/GameLogic/Combat/Hero/State/MagicWeaponIdleState.cs

@@ -15,6 +15,7 @@ namespace GameLogic.Combat.Hero
         private float _addTime;
 
         private float _currTime;
+        private float _awaitTime;
 
         public MagicWeaponIdleState(CombatHeroEntity combatHeroEntity) : base(combatHeroEntity)
         {
@@ -23,29 +24,30 @@ namespace GameLogic.Combat.Hero
 
         protected override void ProEnter()
         {
-           
-           
+            _awaitTime = 1.0f;
         }
 
 
         protected override void ProUpdate(float t)
         {
-            CombatMagicWeaponEntity combatMagicWeaponEntity =
-                CombatController.currActiveCombat.MagicWeaponCombatSence.FindCollidingTarget(
-                    myCombatMagicWeaponEntity);
-            if (combatMagicWeaponEntity != null)
+            if (myCombatMagicWeaponEntity.MagicWeaponCollisionId >= 0)
             {
                 myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.move);
                 return;
             }
-            
-            Quaternion   newQuaternion = Quaternion.LookRotation(Vector3.up);
 
+            _awaitTime -= t;
+            if (_awaitTime <= 0)
+            {
+                myCombatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.att);
+                return;
+            }
 
-            myCombatMagicWeaponEntity.GameObject.transform.rotation = Quaternion.RotateTowards(myCombatMagicWeaponEntity.GameObject.transform.rotation,
-                newQuaternion, 5);
-
+            Quaternion newQuaternion = Quaternion.LookRotation(Vector3.up);
 
+            myCombatMagicWeaponEntity.GameObject.transform.rotation = Quaternion.RotateTowards(
+                myCombatMagicWeaponEntity.GameObject.transform.rotation,
+                newQuaternion, 5);
         }
 
         protected override void ProExit()

+ 8 - 6
Assets/Scripts/GameLogic/Combat/Hero/State/MagicWeaponMoveState.cs

@@ -114,14 +114,16 @@ namespace GameLogic.Combat.Hero.State
             if (myCombatMagicWeaponEntity.CollidingTarget == null ||
                 myCombatMagicWeaponEntity.CollidingTarget.HpBl <= 0)
             {
-                CombatMagicWeaponEntity combatMagicWeaponEntity =
-                    CombatController.currActiveCombat.MagicWeaponCombatSence.FindCollidingTarget(
-                        myCombatMagicWeaponEntity);
-
-
-                myCombatMagicWeaponEntity.CollidingTarget = combatMagicWeaponEntity;
+                // myCombatMagicWeaponEntity.CollidingTarget = combatMagicWeaponEntity;
             }
 
+            MagicWeaponCollisionInfo nMagicWeaponCollisionInfo =
+                CombatController.currActiveCombat.MagicWeaponCombatSence.FindMagicWeaponCollisionInfo(
+                    myCombatMagicWeaponEntity.MagicWeaponCollisionId);
+            myCombatMagicWeaponEntity.CollidingTarget =
+                nMagicWeaponCollisionInfo.a == combatHeroEntity
+                    ? nMagicWeaponCollisionInfo.b
+                    : nMagicWeaponCollisionInfo.a;
             Vector3 targetPos = Vector3.zero;
             CombatMagicWeaponEntity currCollidingTarget = myCombatMagicWeaponEntity.CollidingTarget;
             if (currCollidingTarget == null || !currCollidingTarget.isCombatState) //没有可碰撞的法宝了