profile image

L o a d i n g . . .

Published 2020. 9. 30. 23:41
반응형

평행이동과 좌표계

transform.Translate()는 기본적으로 Local space를 기준으로 움직인다. 단, 함수 옵션으로 Space.Self(Local), Space.World(World)를 넣어 기준점을 지정할 수 있다.

Inspector view의 transform은 부모의 상대 좌표를 기준으로 한다. 상대적인 기준이 될 부모 오브젝트가 존재하지 않는 오브젝트는 월드 좌표를 기준으로 한다.

 

transform.position은 Global space 기준 좌표, transform.localPosition은 Local space 기준 좌표이다.

rotation, scale 또한 Rotation/localRotation, lossyScale/localScale이 존재한다.

 

회전과 쿼터니언

Quaternion(x, y, z, w)

 

Quaternion.LookRotation(Vector3 방향) - 해당 방향을 바라보게끔 회전

Quaternion.Lerp(Vector3 A, Vector3 B, float 정도) - 정도만큼의 중간값

 

Inspector 창에서 rotation을 변경하는 건, 부모 게임 오브젝트(없는 경우 전역) 좌표계를 기준으로 회전시키는 것이다. Scene 창(local 기준)에서 자식 오브젝트의 rotation을 변경하면 Inspector 창의 rotation이 이상하게 출력되는 것을 확인할 수 있다. 이는 부모 local이 아닌 "자신"의 좌표축을 기준으로 회전하기 때문이라고 이해하면 쉽다.

쿼터니언은 회전을 한번에 적용한다. 그렇기 때문에 같은 회전 값을 줬을 때 다른 수치로 나올 수가 없다.

반면에 씬 창에서 직접 회전시키는 건 오일러 방식이다. 오일러 각은 회전을 세 번 나눠서 순차적으로 적용한다. 따라서 회전 순서가 달라지면 결과가 달라진다.

 

Coroutine

StartCoroutine("FadeIn");
StartCoroutine(FadeIn()); => 성능적으로 좋으나 임의적으로 멈출 수 없음

 

1. 처리 중간에 대기 시간을 넣을 수 있다.

2. 내가 끝나길 기다리지 않고, 시작하자마자 바로 다음 라인으로 넘기기 때문에 여러 개의 코루틴을 돌릴 수 있다.
=> 병렬 처리가 가능하다.

반응형
복사했습니다!