게임 물리 - 마찰력과 저항력) 복습을 위해 작성하는 글 2023-04-05
📒 갈무리 - 마찰력과 저항력
📌 마찰력이란?
마찰력(f=uN) : 두 물체의 접촉면 사이에서 물체의 운동을 방해하는 힘
수직항력(N) : 표면에서 물체에 수직으로 작용하는 접촉힘
마찰계수(u) : 두 물체 간의 접촉면에 작용하는 마찰력의 크기를 결정하는 값
- 마찰계수가 높아진다면 마찰력도 높아지게 된다.
- 최대 정지마찰력을 넘어가게 되면 운동하기 시작하는데, 그것을 운동 마찰력이라 한다.
- 운동 마찰력이 되기 직전의 마찰력의 크기를 최대 정지 마찰력이라 한다.
- 움직이는 물체에 힘을 가할 때 더 쉽게 움직인다.
- 최대 정지 마찰력과 운동 마찰력을 비교했을 때, 최대 정지 마찰력이 더 크기 때문에 정지되어 있는 물체를 이동시키는 게 더 어렵다.
m·g·sinΘ(물체가 나아가려는 힘) > Ns·m·g·cosΘ(마찰력)
Ns = 최대 정지 마찰계수
m : 물체의 질량
g : 중력
- 위 식을 만족해야 경사면에서 물체가 내려갈 수 있다.
F= m·g·sinΘ - Nk·m·g·cosΘ
Nk = 운동 마찰 계수
📌 저항력이란?
저항력 : 물체가 유체 내를 움직일 때 이 움직임에 저항하는 힘
Fd(항력) = 1/2·ρ·v²·Cd·A
ρ : 유체의 밀도
v : 속도
Cd : 항력계수
A : 단면적(물체가 나아가는 방향과 수직한 단면적)
🎯 그렇다면 게임에서 어떻게 활용할 수 있을까?
3D에서는 정지 마찰력과 운동 마찰력을 구분지어 사용함
2D에서는 정지 마찰력과 운동 마찰력의 구분이 없이 마찰력으로 통일하여 사용함
유니티 내서의 저항력은 Rigidbody의 Drag라는 값으로 사용한다.
Drag = V = V(1 - D·dt)로 적용된다.
D : 항력계수 값
dt : 경과 시간
2D 게임에서는 마찰력이 더 작은 쪽을 따라가게 된다.
💡 TIP
유니티의 Project setting -> Physics 2D에서 Linear Sleep Tolerance 값은 설정해 놓은 값 보다 속도가 낮다면 0으로 처리하는 기능이다.