마찰력
질량이 m 인 물체가 있을 때, 이 물체의 아래 방향으로 중력 g가 작용한다. 이때 물체의 무개는 mg이다. 이 물체에 수직 항력 N이 작용하며 mg = N이다. 이 물체에 오른쪽 방향으로 힘이 주어졌을 대, 반대 방향인 왼쪽으로 작용하는 힘은 마찰력 F 이다.
μ 가 0 이면 얼음판과 같이 마찰력이 없음을 의미한다. (하지만 실재 세계에서는 이러한 경우가 없다.)
μ가 커질 수록 가해지는 마찰력도 커진다.
최대정지 마찰럭
보통 완전히 정지해 있는 물체에 힘을 가해서 움직이도록 하는 것보다 이동하고 있는 물체에 힘을 가해서 움직이게 하는 것이 더 쉬운 것은 운동 마찰력보다 최대 정지 마찰력이 더 크기 때문이다.
게임에서도 이러한 이론이 적용되는 것은 마찬가지 이다..
3D게임에서는 정지 마찰력과 운동 마찰력을 구분해서 사용되지만, 2D게임에서는 단순히 마찰력 하나로만 사용한다. 이 그래프로 표현하면 다음과 같다.
경사면에 있는 질량이 m인 물체에 작용하는 힘과 마찰력
이 물체는 mg의 무게로 위에서 아래로 누르는 힘이 있을 것이다. 그러면 수직항력은?
녹색 선으로 표시된 3개의 성분으로 분해하면, theta를 알 수 있으므로 물체를 위에서 아래로 누르는 힘은 mg*cosθ 이다. 그리고 물체의 왼쪽으로 가해지는 힘은 mg*Sinθ이다.
이를 통해 물체의 위에서 아래로 누르는 힘과 수직 항력은 동일하므로 이 값은 mg*Cosθ 이다. 그리고 이 물체는 물체의 왼쪽으로 이동하려고 하므로 마찰력은 이와 동일한 µmg Cosθ 이다.
이 물체가 스스로 경사면에서 내려오게 하기 위해서는 최대 정지 마찰력인
즉 내려오는 힘(mg*Sinθ)이 최대 정지 마찰 계수(보다 커야한다. 물체에 주어지는 힘을 정리하면 아래와 같다.
저항력
어떤 물체가 이동할 때, 이 물체에 부딧히는 유체에 의해 저항력을 받는다.
이 저항력에 대한 공식은 다음과 같다.
V : 속도
A : 단면적
이를 게임에 적용하기 위해서 이 모든 값이 필요한 것은 아니다. Unity에서 Drag 값을 이해할 필요가 있다.
V = V( 1 – D * dt )
D : 항력 계수 값
dt : 경과 시간
'프로그래밍 이야기 > GameDev' 카테고리의 다른 글
[Unity] 디버그 로그 사용하기 (0) | 2021.01.31 |
---|---|
[Unity] MonoBehaviour (0) | 2021.01.31 |
[게임이론] 등가속도 운동, 포물선 운동의 활용 (0) | 2021.01.18 |
[게임이론] 등가속도 운동, 포물선 운동 (0) | 2021.01.17 |
[게임이론] 힘과 가속도의 활용 (0) | 2021.01.14 |