unity 判斷觸控座標是否落在ui上
阿新 • • 發佈:2019-02-07
1.觸控座標轉ui的GameObject的localPosition
Vector3 uiPosGet(Vector3 pos,RectTransform rect)
{
Vector2 pos2D;
RectTransformUtility.ScreenPointToLocalPointInRectangle(rect, pos, can.worldCamera, out pos2D);
Vector3 newPos = new Vector3(pos2D.x, pos2D.y, 0);
return newPos;
}
2.判斷newPos的長寬是否超過UI的長寬(以正方形ui示例)/// <summary> /// 判斷當前touch pos是否落在Collider範圍內 /// </summary> /// <param name="pos">觸控座標</param> /// <param name="rect">joy的RectTransform</param> /// <returns></returns> bool isTouchInCollider(Vector3 pos) { bool bRet = false; RectTransform rect = transform as RectTransform; Vector3 newPos = uiPosGet(pos, rect); if (newPos.x >= -m_colliderRadius && newPos.x <= m_colliderRadius && newPos.y >= -m_colliderRadius && newPos.y <= m_colliderRadius) { bRet = true; } return bRet; }