using GameLogic.Combat.Hero; using UnityEngine; namespace GameLogic.Combat.CombatTool { /// /// 法宝战斗场景 /// public class MagicWeaponCombatSence { private BetterList _enemyMagicWeaponList = new BetterList(); private BetterList _playerMagicWeaponList = new BetterList(); /// /// 战斗包围盒 minX miny maxx maxy /// public Vector4 combatBox; /// /// 我方法宝入场点 /// public Vector3 myEnterCombatPos; /// /// 地方法宝入场点 /// public Vector3 enemyEnterCombatPos; 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); } /// /// 将法宝添加导战斗场景 /// /// public void AddMagicWeaponToSence(CombatMagicWeaponEntity combatMagicWeaponEntity) { if (combatMagicWeaponEntity.IsEnemy) { _enemyMagicWeaponList.Add(combatMagicWeaponEntity); } else { _playerMagicWeaponList.Add(combatMagicWeaponEntity); } combatMagicWeaponEntity.CombatAIBasic.ChangeState(CombatHeroStateType.idle); } public void Update(float t) { for (int i = 0; i < _enemyMagicWeaponList.Count; i++) { _enemyMagicWeaponList[i].Update(t); } for (int i = 0; i < _playerMagicWeaponList.Count; i++) { _playerMagicWeaponList[i].Update(t); } } public CombatMagicWeaponEntity FindCollidingTarget(CombatMagicWeaponEntity combatMagicWeaponEntity) { bool isEnemy = combatMagicWeaponEntity.IsEnemy; BetterList magicWeaponList = isEnemy ? _enemyMagicWeaponList : _playerMagicWeaponList; if (magicWeaponList == null) { return null; } for (int i = 0; i < magicWeaponList.Count; i++) { if (magicWeaponList[i].CollidingTarget == combatMagicWeaponEntity) { return magicWeaponList[i]; } } int index = CombatCalculateTool.Instance.GetOdd(0, magicWeaponList.Count); return magicWeaponList[index]; } } }