Пример #1
0
 /// <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);
     }
 }
Пример #2
0
 public Action <ComCollider> onUpdateRegion;//用于事实更新区域的广播事件
 private void OnUpdateRegionFunc(ComCollider comCollider)
 {
     //更新区域
     for (int i = 0; i < comRegions.Length; i++)
     {
         comRegions[i].isEnterThisRgion(comCollider);
     }
 }
Пример #3
0
        /// <summary>
        /// 移除此碰撞器的物体到区块池子
        /// </summary>
        /// <param name="obj"></param>
        public void RemoveColliderFromPools(ComCollider obj)
        {
            bool isContain = colliderPools.Find(x => { return(x == obj); });

            if (isContain)
            {
                colliderPools.Remove(obj);
            }
        }
Пример #4
0
        /// <summary>
        /// 添加进入此碰撞器的物体到区块池子
        /// </summary>
        /// <param name="obj"></param>
        public void AddColliderToPools(ComCollider obj)
        {
            bool isContain = colliderPools.Find(x => { return(x == obj); });

            if (!isContain)
            {
                colliderPools.Add(obj);
            }
        }
Пример #5
0
 /// <summary>
 /// 检查碰撞停留的函数
 /// </summary>
 /// <param name="comCollider"></param>
 private void CheckOutCollider(ComCollider comCollider)
 {
     if (iComColliderStay != null)
     {
         if (onComColliderStay != null)
         {
             onComColliderStay(comCollider);
         }
     }
     CheckOutColliderEnter(comCollider);
 }
Пример #6
0
        /// <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);
            }
        }