1. 程式人生 > >unity 判斷觸控座標是否落在ui上

unity 判斷觸控座標是否落在ui上

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