/// <summary> /// 检测是否有object进入到此区域内 /// </summary> /// <param name="point"></param> /// <returns></returns> public bool isEnterThisRgion(ComCollider comCollider) { //判定方形区域 if (comCollider.ColiderCenterPos.x >= LeftAndRight.x && comCollider.ColiderCenterPos.x < LeftAndRight.y) { if (comCollider.ColiderCenterPos.y >= UpAndDown.x && comCollider.ColiderCenterPos.y < UpAndDown.y) { AddColliderToPools(comCollider); // Debug.Log(string.Concat(comCollider.name, "离开到Region", index)); return(false); } else { RemoveColliderFromPools(comCollider); // Debug.Log(string.Concat(comCollider.name, "进入到Region", index)); return(true); } } else { RemoveColliderFromPools(comCollider); // Debug.Log(string.Concat(comCollider.name, "离开到Region", index)); return(false); } }
public Action <ComCollider> onUpdateRegion;//用于事实更新区域的广播事件 private void OnUpdateRegionFunc(ComCollider comCollider) { //更新区域 for (int i = 0; i < comRegions.Length; i++) { comRegions[i].isEnterThisRgion(comCollider); } }
/// <summary> /// 移除此碰撞器的物体到区块池子 /// </summary> /// <param name="obj"></param> public void RemoveColliderFromPools(ComCollider obj) { bool isContain = colliderPools.Find(x => { return(x == obj); }); if (isContain) { colliderPools.Remove(obj); } }
/// <summary> /// 添加进入此碰撞器的物体到区块池子 /// </summary> /// <param name="obj"></param> public void AddColliderToPools(ComCollider obj) { bool isContain = colliderPools.Find(x => { return(x == obj); }); if (!isContain) { colliderPools.Add(obj); } }
/// <summary> /// 检查碰撞停留的函数 /// </summary> /// <param name="comCollider"></param> private void CheckOutCollider(ComCollider comCollider) { if (iComColliderStay != null) { if (onComColliderStay != null) { onComColliderStay(comCollider); } } CheckOutColliderEnter(comCollider); }
/// <summary> /// 是否colliderEnter /// </summary> /// <param name="comCollider"></param> private void CheckOutColliderEnter(ComCollider comCollider) { if (colliderList == null) { colliderList = new List <ComCollider>(); } ComCollider com = colliderList.Find((x) => { return(x == comCollider); }); if (com == null) { //TODO执行一次Enter; if (onComColliderEnter != null) { onComColliderEnter(comCollider); } colliderList.Add(comCollider); } }