(유니티) 로컬 스페이스, 글로벌 스페이스

각각 로컬 스페이스, 글로벌 스페이스 설정일 때 로케이션 방향을 본 것입니다.

글로벌은 게임 세상을 기준으로 하는 절대적인 좌표축. 로컬은 나 자신의 부모 또는 나 자신의 회전을 기준으로 하는 좌표축입니다.

두 가지의 차이점은 글로벌은 절대적인 좌표이고 로컬은 상대적인 좌표입니다.

보통 평행이동은 기본적으로 로컬 스페이스를 기준으로 이동합니다. 게임 세상을 기준으로 하는 것이 아니라 자기 자신을 기준으로 한다는 것입니다.

// 자기 자신을 기준으로 평행이동
transform.Translate(move * Time.deltaTime, Space.Self);

// 게임 세상을 기준으로 평행이동
transform.Translate(move * Time.deltaTime, Space.World);

물론 이걸 코드상에서 게임 세상을 기준으로 평행이동하게 바꿀 수 있는데 뒤에 Space,World를 붙이면 됩니다.

캡슐 2개를 만들고 박스의 자식으로 만들었습니다.

만약에 박스가 X축으로 2.0만큼 이동하여도 캡슐들도 박스와 함께 이동하지만 캡슐들의 로컬 스페이스는 변화가 없습니다. 왜냐하면 박스를 부모로 가지기 때문입니다.

좌표만 해당하는 것이 아니라 박스의 크기를 바꾸면 박스를 부모로 가지는 캡슐들도 크기가 변합니다. 캡슐의 크기는 변화가 없다고 나오지만 박스에서 벗어나면 게임 세상을 기준으로 보게되어 크기가 증가한 것으로 나옵니다.

// 글로벌 좌표를 기준으로 위치 0으로 이동
transform.position = new Vector3(0,0,0);

// 부모 좌표를 기준으로 위치 0으로 이동
transform.localPosition = new Vector3(0,0,0);

// 포지션이 있는 만큼 rotation, scale도 있다
transform.rotation
transform.localRotation

transform.lossyScale // 글로벌에서의 진짜 스케일
transform.localScale

transform도 여러가지 함수를 가집니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다