diff --git a/ml_pmc/Main.cs b/ml_pmc/Main.cs index bb3a3ea..cccfeef 100644 --- a/ml_pmc/Main.cs +++ b/ml_pmc/Main.cs @@ -86,11 +86,14 @@ namespace ml_pmc if((p_source != null) && (p_target != null)) { Ray l_ray = new Ray(); - l_ray.origin = (p_source.transform.position + p_source.transform.rotation * p_source.center); - l_ray.direction = (p_target.transform.position + p_target.transform.rotation * p_target.center) - l_ray.origin; - List l_hits = Physics.RaycastAll(l_ray, p_limit, LayerMask.NameToLayer("UI Internal")).ToList(); + l_ray.origin = p_source.bounds.center; + l_ray.direction = p_target.bounds.center - l_ray.origin; + List l_hits = Physics.RaycastAll(l_ray, p_limit).ToList(); if(l_hits.Count > 0) { + l_hits.RemoveAll(hit => hit.collider.gameObject.layer == LayerMask.NameToLayer("UI Internal")); // Somehow layer mask in RaycastAll just ignores players entirely + l_hits.RemoveAll(hit => hit.collider.gameObject.layer == LayerMask.NameToLayer("PlayerLocal")); + l_hits.RemoveAll(hit => hit.collider.gameObject.layer == LayerMask.NameToLayer("PlayerClone")); l_hits.Sort((a, b) => ((a.distance < b.distance) ? -1 : 1)); l_result = (l_hits.First().collider.gameObject.transform.root == p_target.transform.root); }