在Unity中,可以使用RectTransform组件的InverseTransformPoint方法将世界坐标转换为anchoredPosition。

以下是一个示例代码:

public RectTransform rectTransform;  // 需要转换坐标的RectTransform组件

public Vector2 ConvertWorldToAnchoredPosition(Vector3 worldPos)
{
    Vector2 anchoredPos = Vector2.zero;

    if (rectTransform != null)
    {
        // 将世界坐标转换为本地坐标
        Vector3 localPos = rectTransform.InverseTransformPoint(worldPos);

        // 将本地坐标转换为anchoredPosition
        anchoredPos.x = localPos.x / rectTransform.rect.width * rectTransform.sizeDelta.x;
        anchoredPos.y = localPos.y / rectTransform.rect.height * rectTransform.sizeDelta.y;
    }

    return anchoredPos;
}

使用示例:

Vector3 worldPos = new Vector3(10, 0, 0);  // 要转换的世界坐标
Vector2 anchoredPos = ConvertWorldToAnchoredPosition(worldPos);

Debug.Log('Anchored Position: ' + anchoredPos);

请注意,上述代码假设RectTransform的父级是Canvas,并且使用了锚点(anchoredPosition)。如果没有使用锚点或者父级不是Canvas,请根据实际情况进行调整。

Unity: 世界坐标转换为锚点坐标 (AnchoredPosition) - 详细步骤与代码示例

原文地址: https://www.cveoy.top/t/topic/1ch 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录