이제까지 유니티2D가 끝나고 오늘부터 유니티3D가 시작되었다. 단순하게 생각하면 x,y축 두개만 있는 게임에서 z축 하나가 늘었다고 생각할 수 있지만, 쓰는 함수가 더 많아진 것 같다. 그 중하나가 rigidbody - force인데 2d할때는 한번도 배워본 적 없었지만 이번에 바로 배우게 되어서 TIL쓰게 되었다.
1. Rigidbody - force란?
간단하게 말하면 말 그대로 rigidbody에 힘을 추가하는 것이다.
Rigidbody 컴포넌트를 사용하여 게임 오브젝트에 물리적인 힘을 가할 때, 이 ForceMode를 사용하여 다양한 힘 적용 방식을 설정할 수 있다.
주요한 ForceMode 종류는 다음과 같다.
이러한 ForceMode를 적절히 활용하여 게임 오브젝트에 원하는 물리적인 움직임과 효과를 부여할 수 있다.
좀 더 구체적으로 들어가자면,
힘은 활성 Rigidbody에만 적용될 수 있고 GameObject가 비활성화된 경우 AddForce는 아무런 효과가 없다. 라는 정보를 알 수 있다.
더 자세한 정보는 유니티 Documentation
2. 실제 사용 예시
강의를 들으면서 실제로 사용한 예시를 보게 되었는데 바로 점프를 구현할 때 사용했다. 코드를 보면
if(context.phase == InputActionPhase.Started && IsGrounded() )
{
_rigidbody.AddForce(Vector2.up * jumpPower, ForceMode.Impulse);
}
보면 ForceMode중에서 Impulse를 사용한 것을 볼 수 있다. Impulse의 효과는 순간적인 힘을 적용한다. 짧은 시간에 갑작스러운 움직임이 발생한다.라고 되어있다.
점프라는 행동이 갑작스럽게 힘을 사용하면서 위로 뛰어오르는 것이기 때문에 Impurse를 쓴 것을 볼 수 있다.
3. 회고
3D프로젝트가 시작되었는다. 새로운 마음으로 강의를 들으면서 시작했는데 분명 잘 따라갔음에도 버그가 일어났다. 강의를 보면 튜터님이 하시는 이동할 때 잘 이동하고 점프할 때 잘 되었었는데 내 화면에서는 전혀 움직이지 않았다. 강의도 다시 보고 틀린 부분있나 하나하나 봤는데도 불구하고 전혀 없었다. 그래서 1시간 정도 보다가 하고있던 유니티 파일을 삭제했다가 다시 해보았다. 분명 코드도 똑같이하고 유니티 배치도 똑같이 했는데 삭제했다가 다시 해보니까 잘되는 것이다. 왜 그랬었는지 정말 미스테리이다.. 오늘 그 버그때문에 진도도 더 못나가고 그부분만 보고있었는데 이럴거면 진작에 삭제했다가 다시할걸 그랬다고 후회했다. 그러면 진도 조금이라도 더 나갈 수 있었는데.. 쨋든 그렇게 다시 만들어서 고쳐놓고 다음에 공부 시작할 때는 진도 나갈 수 있어서 다행이다.