Esempio n. 1
0
    //public bool IsBlocked(Vector2 pos)
    //{
    //    return true;
    //}

    public Sector Bounce(IM.Vector2 pos, Sector collideSector, SectorArea area)
    {
        int iCurSector = CalcSectorIdx(pos.x0z);
        int iColomn    = m_AngleList.Count;

        int iCurColomn = iCurSector % iColomn;

        GameMatch match = GameSystem.Instance.mClient.mCurMatch;

        IM.Vector3 dirSectorToBasket      = GameUtils.HorizonalNormalized(match.mCurScene.mBasket.m_vShootTarget, collideSector.center.x0z);
        IM.Vector3 dirSectorToBasketRight = IM.Quaternion.AngleAxis(new IM.Number(90), IM.Vector3.up) * dirSectorToBasket;
        IM.Vector2 curRight = dirSectorToBasketRight.xz;

        IM.Vector2 dirSector2Pos = (collideSector.center - pos).normalized;
        int        iNewCol       = iCurColomn;

        if (IM.Vector2.Dot(dirSector2Pos, curRight) > IM.Number.zero)
        {
            iNewCol = Mathf.Clamp(iCurColomn + IM.Random.Range(3, 6), (int)area.start.x, (int)area.start.x + (int)area.range.x - 1);
        }
        else
        {
            iNewCol = Mathf.Clamp(iCurColomn - IM.Random.Range(3, 6), (int)area.start.x, (int)area.start.x + (int)area.range.x - 1);
        }

        int iNewRow = Mathf.Clamp((int)area.start.y + IM.Random.Range(0, (int)area.range.y), (int)area.start.y, (int)area.start.y + (int)area.range.y - 1);
        int index   = iNewRow * iColomn + iNewCol;

        return(m_Sectors[index]);
        //AddDrawSector("targetSector", targetSector);
    }
Esempio n. 2
0
    public bool InSectors(SectorArea area, IM.Vector3 vPos)
    {
        int iCurSector = CalcSectorIdx(vPos);
        int row        = iCurSector / m_AngleList.Count;
        int col        = iCurSector % m_AngleList.Count;

        return(area.start.x <= col && col < (area.start.x + area.range.x) && area.start.y <= row && row < (area.start.y + area.range.y));
    }