簡體   English   中英

Unity獲得GameObject的優勢

[英]Unity get corners of GameObject

我正在使用.GetWorldCorners查找.GetWorldCorners圖像的右上角和左下角。 但是,我得到的值與實際角點不同。 同樣,當我移動Image ,拐角也會從Image移開位置,而不是與Image精確移動。 我已經嘗試了transform.postion的相同問題。

private void OnDrawGizmos()
{
    Vector3[] corners = new Vector3[4];
    GetComponent<RectTransform>().GetWorldCorners(corners);

    var bottomLeft = corners[0];
    var topRight = corners[2];

    Gizmos.color = new Color(0, 1, 0, 0.5f);
    Gizmos.DrawCube(topRight, bottomLeft);
    //Gizmos.DrawCube(new Vector2(this.transform.position.x - 0.5f, this.transform.position.y + 0.5f), new Vector2(this.transform.position.x + 0.5f, this.transform.position.y - 0.5f));
}

圖片

您向Gizmos.DrawCube提供了錯誤的輸入,它期望居中為第一,而大小為第二。 因此正確的代碼是:

private void OnDrawGizmos()
{
    Vector3[] corners = new Vector3[4];
    GetComponent<RectTransform>().GetWorldCorners(corners);

    var center = (corners[0] + corners[2]) / 2;
    var size = corners[2]- corners[0];

    Gizmos.color = new Color(0, 1, 0, 0.5f);
    Gizmos.DrawCube(center, size);
}

文檔開始public static void DrawCube(Vector3 center, Vector3 size);

您似乎在繪制立方體,其中心位於圖像的右上角,大小等於圖像的左下角位置。

相反,嘗試

Vector3 size = topRight - bottomLeft;
Gizmos.DrawCube(bottomLeft + size * 0.5f, size);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM