diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs index 22556d34..6610106b 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Card/CardDrag.cs @@ -272,6 +272,15 @@ public class CardDrag : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDrag cardEntity.influencePreviewPool = handler.HandleAngleWithResult(euler); } cardEntity.influencePreviewPool=MathTool.RemoveDuplicates(cardEntity.influencePreviewPool); + if (effectRange.Equals(EffectRange.range8_2)|| effectRange.Equals(EffectRange.range6_3)) + { + getNodeTools.checkListPass(cardEntity.influencePreviewPool, playerOnNode); + } + else + { + getNodeTools.checkListPass(cardEntity.influencePreviewPool, currentNode); + } + } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs index 3cd8362b..9c64f463 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Handler/EffectRangeHandler6_2.cs @@ -56,15 +56,14 @@ public class EffectRangeHandler6_2 : EffectRangeHandlerBase private void get6_2Node(MapUnity currentNode,int value) { - if (tryGetNodeInfluencedable(currentNode.unitPool[counter.Subtract(value,2)])) - { - tryGetNodeInfluencedable(currentNode.unitPool[counter.Subtract(value, 2)].unitPool[value]); - } - if (tryGetNodeInfluencedable(currentNode.unitPool[counter.Add(value,2)])) - { - tryGetNodeInfluencedable(currentNode.unitPool[counter.Add(value, 2)].unitPool[value]); - } + /*tryGetNodeInfluencedable(currentNode.unitPool[counter.Subtract(value, 2)]); + tryGetNodeInfluencedable(currentNode.unitPool[counter.Subtract(value, 2)].unitPool[value]); + tryGetNodeInfluencedable(currentNode.unitPool[counter.Add(value, 2)]); + tryGetNodeInfluencedable(currentNode.unitPool[counter.Add(value, 2)].unitPool[value]);*/ tryGetNodeInfluencedable(currentNode.unitPool[value]); - + tryGetNodeInfluencedable(currentNode.unitPool[counter.Subtract(value, 2)]); + tryGetNodeInfluencedable(currentNode.unitPool[counter.Subtract(value, 1)]); + tryGetNodeInfluencedable(currentNode.unitPool[counter.Add(value, 2)]); + tryGetNodeInfluencedable(currentNode.unitPool[counter.Add(value, 1)]); } } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs index 9a12d39f..1156ee9e 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/Tool/getNodeTools.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; using UnityEngine.UIElements; @@ -96,39 +97,38 @@ public class getNodeTools } - public static void checkListPass(List mapUnityList) + public static void checkListPass(List mapUnityList, MapUnity mapUnity) { - - for (int i = 0; i < mapUnityList.Count; i++) + + for (int i = mapUnityList.Count - 1; i >= 0; i--) { - if (!checkNodePass(mapUnityList[i])) + if (!checkNodePass(mapUnityList[i], mapUnity)) { mapUnityList.RemoveAt(i); } - } } - public static bool checkNodePass(MapUnity mapUnity) + public static bool checkNodePass(MapUnity mapUnity, MapUnity centerMapUnity) { LayerMask layerMask=new LayerMask(); int blockLayer = LayerMask.NameToLayer("Block"); layerMask |= (1 << blockLayer); bool canPass=true; //MapUnity playerOnNode = GameManager.Instance.playerOn.transform.GetComponent(); - var playerOnNode=GameManager.Instance.player; - float distance = Vector3.Distance(playerOnNode.transform.position, mapUnity.transform.position); - Vector3 dir = mapUnity.transform.position - playerOnNode.transform.position; - Ray ray = new Ray(playerOnNode.transform.position, dir); + //var playerOnNode=GameManager.Instance.player; + float distance = Vector3.Distance(centerMapUnity.transform.position, mapUnity.transform.position); + Vector3 dir = mapUnity.transform.position - centerMapUnity.transform.position; + Ray ray = new Ray(centerMapUnity.transform.position, dir); if (Physics.Raycast(ray, out RaycastHit raycastHit, distance, layerMask.value)) { canPass = false; } -/* if (!canPass) - {*/ - Debug.Log("距离是" + distance + ",结果是:" + canPass+",角度是:"+dir); - //} + if (mapUnity.locationX==1&& mapUnity.locationY==5) + { + Debug.Log("距离是" + distance + ",结果是:" + canPass + ",角度是:" + dir + " " + layerMask.value + "ray是" + ray + "X是:" + mapUnity.locationX + "Y是:" + mapUnity.locationY); + } return canPass; } diff --git a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs index 0f5b65a7..cec46f42 100644 --- a/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs +++ b/ColorlessWorld-2024-4-2/Assets/Scripts/manager/MapUnityManager.cs @@ -62,9 +62,14 @@ public class MapUnityManager : Singleton castPool.Remove(playerOn); } } + castPool=MathTool.RemoveDuplicates(castPool); + Debug.Log("去除前数量是" + castPool.Count); + MapUnity playerOnNode = GameManager.Instance.playerOn.transform.GetComponent(); + getNodeTools.checkListPass(castPool,playerOnNode); //castPool.Distinct().ToList(); //getNodeTools.checkListPass(castPool); //遍历影响池变色 + Debug.Log("数量是" + castPool.Count); for (int i = 0; i < castPool.Count; i++) { castPool[i].influenced = true;