Unity - 특정 축 기준으로 물체 회전(RotateAround)


Unity - 특정 축 기준으로 물체 회전(RotateAround)

물체를 특정 축을 기준으로 회전해야 할 일이 생겨서 찾아보았다.

내가 구현하려던 것은 안전바를 안전바의 끝 기준으로 안전바가 올라가는 것처럼 회전시키고 싶었던 것이다.

그래서 우선 아래와 같이 안전바의 child로 empty object인 rotatepoint를 만들었다.

1

parkingbar 가 안전바이고, rotatepoint가 회전축을 삼기 위한 포인트(회전을 위한 축)으로 삼기 위해 둔 빈 오브젝트이다.

2

Unity의 Scene view에서 보면 저런식으로, 안전바의 끝에 rotatepoint가 위치할 수 있도록 했다.

그리고 스크립트는 다음과 같이 수정했다.

우선 안전바 object를 찾고,

3

안전바가 90도까지 위로 올라갈때까지만 회전하도록 했다.

4

결과적으로 실행시켰을 때 내가 원하던대로 안전바가 위로 90도까지 저 rotatepoint를 기준으로 회전했다.

그렇다면 회전할 때 사용한 RotatePoint() 함수에 대해 알아보도록 하겠다.

Transform.RotateAround

public void RotateAround(Vector3 point, Vector3 axis, float angle);

로 쓰인다.

이때 처음의 point는 회전 시키고 싶은 축, axis는 방향, angle은 회전 시킬 각도(속도?)를 의미하는 것 같다.