//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); }
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)); }