유니티 물리

AkaPoka·2025년 6월 22일

유니티

목록 보기
8/8

물리 처리는 기본적으로 FixedUpdate()에서 권장된다.
오브젝트에 물리를 넣으려면 반드시 Rigidbody가 필요하다. 그리고 Collider가 있어야 충돌을 한다.

Rigidbody.linearVelocity

리지드바디의 속도를 설정가능하다.

Rigidbody.AddForce()

인자로 Vector3와 ForceMode를 받는 AddForce함수
ForceMode는 enum 열거형으로, 우측의 값이 enum이다.

이렇게 총 4가지다.

각자 사용하는 용도에 따라 다르게 사용하면 될 것같다.
질량이 1일 때 Impulse로 AddForce한 벡터는 linearVelocity에 그대로 전해진다.

myRb.linearVelocity = new Vector3(5, 5, 5);
myRb.AddForce(new Vector3(5, 5, 5), ForceMode.Impulse);

myRb의 mass가 1이고 멈춰있었다는 가정하에 둘의 속도는 똑같다.

Rigidbody.AddTorque()

기본적으로 AddForce와 동일하게 인자를 받아온다.

회전은 벡터를 기준으로 시계방향으로 회전한다. 이건 Y축으로 +0.1 만큼 회전시킨 것

OnCollision 이벤트 함수

OnCollisionEnter 콜라이더에 Enter 했을 때
OnCollisionStay 콜라이더에 Stay 하는 동안
OnCollisionExit 콜라이더에 Exit 할 때

OnCollisionEnter(Collision other) 와 같이 인자로는 충돌하는 대상의 콜라이더가 들어온다.

OnTrigger 이벤트 함수

트리거는 실제로 충돌은 하지않으나, 충돌을 감지만 한다.
OnTriggerEnter 콜라이더에 Enter 했을 때
OnTriggerStay 콜라이더에 Stay 하는 동안
OnTriggerExit 콜라이더에 Exit 할 때

0개의 댓글