Unity: 世界坐标转换为锚点坐标 (AnchoredPosition) - 详细步骤与代码示例
在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,请根据实际情况进行调整。
原文地址: https://www.cveoy.top/t/topic/1ch 著作权归作者所有。请勿转载和采集!