Unity Shortcuts

대부분 Unity의 기본적인 단축키(shortcuts)는 알고 있을 것이다.

유니티 단축키 링크

그 중에도 특히나 많이 사용되는 것이 유니티 에디터 상단의 transform, scaling menu 등에 이어진 shortcut들이다. 일명 qwerty.

일렬로 배치된 각 사각형들이 하나의 메뉴 모드이며, 이 메뉴들 사이를 q,w,e,r,t,y로 오갈 수 있다.

주의할 것은.. 한/영키를 오가며 text 처리를 하다가 한글 모드로 되어 있다면 저 shortcut들이 동작하지 않는다.
명심하자.

마우스로 클릭한 좌표를 unity editor의 좌표로 얻어오기

게임을 만들다 보면 플레이어가 마우스 클릭으로 선택한 좌표를 unity editor의 좌표로 얻어와야 하는 상황이 있을 수 있다.
주의하자. screen의 좌표가 아니다!

어떻게 얻어올 수 있을까?

unity에는

Input.mousePosition

로 플레이어가 마우스로 클릭한 좌표를 screen 좌표로 얻어올 수 있다. Input.mousePositionVector3이다. 하지만 우리가 원하는 것은 unity editor의 좌표이지 screen의 좌표가 아니다.
그러므로 스크립트에 Camera형 변수를 하나 선언한다.

 public new Camera camera;

그리고 Camera class가 가지고 있는, 스크린 좌표에서 월드 좌표(unity editor의 좌표)로 변환시켜 주는 함수를 활용한다.

Vector2 mouseposition = new Vector2(Input.mousePosition.x, Input.mousePosition.y);
mouseposition = camera.ScreenToWorldPoint(mouseposition);

이렇게 함으로써 문제 해결이 가능해졌다.

\[log(x)\]

하지만 gradient가 안쪽으로 들어가면서 log가 갑자기 나오는데 그 이유는 다음과 같습니다. \(\nabla\theta \pi\theta\)에 \(\pi\theta\)를 곱하고 나누면 아래와 같이 log의 미분의 형태가 되기 때문에 \(\pi\theta\)의 gradient를 \(log\pi_\theta\)의 gradient로 바꿀 수가 있습니다.

댓글남기기