Exemple #1
0
    public override void split()
    {
        foreach (var collider in Physics2D.OverlapBoxAll(position, owner.GetComponent <BoxCollider2D>().size, 0))
        {
            if (collider.GetComponent <PassObstance>() == null)
            {
                continue;
            }
            var      splitPos      = collider.transform.position;
            NaviArea splitNaviArea = groundArea.getNavi(splitPos.x);
            //TODO ??
            if (splitNaviArea == null)
            {
                continue;
            }

            var asize = new Vector2((splitPos.x - (splitNaviArea.position.x - splitNaviArea.extents.x)) / 2, splitNaviArea.extents.y);
            var apos  = new Vector2(splitNaviArea.position.x - splitNaviArea.extents.x + asize.x, splitNaviArea.position.y);
            var aArea = new NaviArea(asize, apos, groundArea);
            if (asize.x > 0)
            {
                groundArea.naviAreaList.Add(aArea);
            }
            var bsize = new Vector2(((splitNaviArea.position.x + splitNaviArea.extents.x) - splitPos.x) / 2, splitNaviArea.extents.y);
            var bpos  = new Vector2(splitNaviArea.position.x - splitNaviArea.extents.x + asize.x, splitNaviArea.position.y);
            var bArea = new NaviArea(bsize, bpos, groundArea);
            if (bsize.x > 0)
            {
                groundArea.naviAreaList.Add(bArea);
            }
            groundArea.naviAreaList.Remove(splitNaviArea);
        }
        groundArea.debugView();
    }
Exemple #2
0
    void Awake()
    {
        var navi = new NaviArea(GetComponent <BoxCollider2D>().bounds.extents, transform.position, this);

        originNaviArea = navi;
        naviAreaList.Add(navi);
        Navigation.naviList.Add(navi);
    }
Exemple #3
0
 public override void connect()
 {
     foreach (var collider in Physics2D.OverlapBoxAll(position, owner.GetComponent <BoxCollider2D>().size, 0))
     {
         if (collider.GetComponent <GroundArea>() != null)
         {
             NaviArea nearArea = null;
             foreach (var naviArea in collider.GetComponent <GroundArea>().naviAreaList)
             {
                 if (nearArea == null)
                 {
                     nearArea = naviArea;
                     continue;
                 }
                 if (Vector3.Distance(nearArea.position, owner.transform.position) > Vector3.Distance(naviArea.position, owner.transform.position))
                 {
                     nearArea = naviArea;
                 }
             }
             connectNaviList.Add(nearArea);
         }
     }
 }