如何将画布空间转换为世界空间

时间:2018-10-14 20:32:01

标签: unity3d

我基本上想找到一种设置transform.position = recttransform.position;

的方法

我需要一个将recttransform位置转换为变换位置的函数。

让我们说

RectTransform objectA;

Transform objectB;

Canvas canvas;

Start()
{
 //All i want to do is this..
 objectB.transform.position = CanvasToWorld(canvas, objectA);
}


Vector2 CanvasToWorld(Canvas canvas, RectTransform rect)
{
//Do some function and return world position of the recttransform 
}

2 个答案:

答案 0 :(得分:0)

好的,我找到了一个简单的解决方案。我希望这对某人有用。 :)

RectTransform objectA;
Transform objectB;

    Vector3 pos = Camera.main.ViewportToWorldPoint(objectA.position);
    objectB.position = Camera.main.WorldToViewportPoint(pos);

答案 1 :(得分:0)

transform.positionrectTransform.position在同一个空间(世界空间)中,因为RectTransform继承自Transformposition是相同的属性。

rectTransform.anchoredPosition是可在Canvas空间上工作的人

问题可能出在您的画布配置上,如果它是Overlay,则位置会相去甚远,但是在CameraWorld上,它应该非常精确,您甚至可以更改RectTransform进行旋转以更改游戏对象的中心。