Unity/기초 예제

유니티 AddTorque 간단한 예제 유니티 기초

최애뎡 2021. 5. 9. 13:21
728x90
반응형

이번 예제는 간단하게 3D Object인 Plane과 Cube를 사용하였으며
Cube에 Ex_06_2 스크립트를 적용하였습니다.
AddTorque
AddForce와 비슷하지만 정의된 축을 기준으로 게임 오브젝트를 회전시키는데 힘이 작용합니다.
여기서 Torque는 아주 간략히 요약하면
물체에 작용하여 물체를 회전시키는 원인이 되는 물리량으로서 비틀림모멘트라고도 합니다. (두산백과)
AddTorgue는 두 개의 컴포넌트가 있는데 AddForce와 마찬가지로 두 번째 요소는 선택사항입니다.
첫 번째 컴포넌트는 토크가 적용되는 축과 적용되는 토크의 강도를 정의하는 벡터입니다.

예를 들어
float h = Input.GetAxis("Horizontal") * amount * Time.deltaTime;
AddTorque(transform.up * h, ForceMode.Force);
이런 식으로 사용하게 되면 로컬 위쪽이 토크를 추가할 축이 됩니다.

Unity는 왼손 나사 법칙을 사용하므로 토크는 위 그림과 같이 축에 추가됩니다.
위 그림처럼 엄지를 기준으로 손가락이 접힌 방향으로 토크가 추가된다고 생각하면 됩니다.
float h = Input.GetAxis("Horizontal") * amount * Time.deltaTime; 이 부분에서
변수 h는 가로축(Horizontal)에서 일정 시간 동안 변수 양이 곱해진 입력값을 가져오는데 사용되고
        float v = Input.GetAxis("Vertical") * amount * Time.deltaTime;
AddTorque(transform.right * v, ForceMode.Force);이렇게 되면
변수 v는 세로축(Vertical)에서 일정 시간 동안 변수 양이 곱해진 입력값을 가져오는데 사용되고,
transform.right에 의해 로컬의 X축 즉

이런 식으로 토크가 적용이 되겠습니다.

여기서 리지드바디의 Angular Drag 컴포넌트를 생각해볼 수가 있는데요. Angular Drag는 토크를 오브젝트에 적용하였을 때 영향을 주는 방식을 정의합니다. Drag를 공기 저항과 같이 생각하는 것처럼 토크에 의해 회전하는 오브젝트에 저항하는 힘이 생겨 점점 멈추게 하는 것이죠! 그렇기 때문에 Angular Drag의 값을 올릴수록 회전이 힘들어지며 0으로 하면 방해하는 힘이 없기 때문에 오브젝트를 계속 돌게 할 수 있습니다.

먼저 코드를 보도록 하겠습니다.

위에서 설명한 바와 같이 토크를 적용하였고 방향키를 누르면 확인할 수 있도록 하였습니다.
바로 실행 화면을 보겠습니다.

토크에 의해 방향키를 눌렀을 때 그에 따른 축으로 잘 돌아가는 모습을 보실 수 있습니다.
여기서 방향키를 눌러서 회전시킨 후 방향키를 때면 AddTorque 역시 물리 시뮬레이션의 일부이기
때문에 회전이 바로 멈추는 것이 아니라 Angular Drag에 의해 회전이 멈추기 전까지는
관성에 의해 오브젝트가 계속 돌아가는 것을 확인하실 수 있습니다.
직접 해보시면 어떤 느낌인지 확실히 아실 수 있으실 겁니다.

반응형