본문 바로가기
Unity/API - RectTransform

RectTransform 이해하기: Canvas - WorldSpace

by PlaneK 2020. 8. 14.

Canvas - WorldSpace

RenderMode 중 WorldSpace는 Canvas가 따르는 좌표를 WorldSpace로 설정하는 것이다.

width와 height이 (4,4)인 캔버스를 예로 들어보자.

이 캔버스는 pivot이 가운데 있다. 이 pivot의 worldPosition과 localPosition의 값은?

canvas.position (worldposition)

scale이 x1이기 때문에 WorldSpace와 Canvas의 좌표가 동일하다.

그래서 worldPosition은 칸의 갯수를 통해 쉽게 파악할 수 있다.

따라서 canvas.position = (2,2) 이다.

canvas.localPosition

이 캔버스의 상위 개체는 없다. 사실 상 WorldSpace 자체가 상위 개체라고 봐도 무방하다.

따라서 localPosition은 worldPosition과 동일하게 (2,2)이다.

 

이제는 Canvas를 상위개체로하는 panel을 가정해보자.

panel의 width와 height도 Canvas와 같이 (4,4)이다.

panel은 canvas의 하위 개체이므로 Canvas의 좌표상에서 움직인다.

panel.position

상위 개체의 좌표를 따르므로 canvas의 좌표를 통해 알 수 있다.

canvas의 scale이 x1이기 때문에 canvas의 좌표 칸의 갯수가 곧 WorldSpace 상의 좌표다.

따라서 (4,4)이다.

panel.localPosition

캔버스의 pivot으로부터 panel의 pivot까지의 거리이다.

localPosition는 Canvas의 좌표상에서 계산된다.

그러므로 Canvas의 피벗으로부터 칸의 갯수를 세면 (2,2)이다.

이제 Canvas의 scale을 x1.5 로 높여보자. 

width와 height은 그대로이기 때문에 칸의 갯수는 늘어나지 않는다.

대신 칸의 크기가 커지고 worldSpace 상에서 canvas의 좌표가 더 넓게 자리잡았다.

panel의 좌표도 canvas의 scale을 따라 커졌다.

panel.position

panel의 pivot은 canvas의 scale이 커짐에 따라 영향을 받는다.

canvas의 좌표가 worldSpace와 동일하지 않기 때문에 칸의 갯수만으로는 알 수 없다.

panel의 pivot은 canvas의 pivot으로부터 WorldSpace 상에서 

(2,2) 떨어져 있었는데 canvas의 배율이 x1.5로 커져서 

(2*1.5, 2*1.5) 만큼 떨어지게 된다. 

따라서 panel의 pivot의 worldPosition은 (2 + 3, 2 + 3) 이다.

panel.localPosition

panel의 pivot은 위치가 그대로이다. 그래서 칸의 갯수를 통해 (2,2)임을 알 수 있다.

그런데 localPosition의 증감이 WorldSpace 상에서는 1.5배 더 커진다.

예를 들어, localPosition의 x축을 '-2'만큼 주게되면 WorldSpace상에서는 '-3'만큼 이동한다.

 

댓글