📒 갈무리 - 힘과 가속도
📌 충격력과 충격량
F = ma
F = 힘(N), m = 질량(kg), a = 가속도(m/s²)
- 힘 F가 동일할 때, 질량이 크면 가속도는 작아지고, 질량이 작아지면 가속도 값은 커질 것이다.
중력(g) = -9.8m/s²
무게(힘) = mg
V1 = V2 자유낙하 운동의 법칙 : 질량과 상관없이 두 물체가 받는 가속도가 일정하기 때문에 두 물체는 같은 속도로 떨어지게 된다.
- 일상생활에서 물체가 같은 속도로 떨어지지 않는 이유는 공기 저항력이 있기 때문이고, 공기 저항력이 없다면 같은 중력 값을 받기 때문에 어떠한 물체도 같은 속도로 떨어지게 될 것이다.
- 힘을 주는 것과 가속도를 주는 것은 엄연히 다르다.
- 힘을 주는 것은 질량에 따라 속도가 달라지는 것이지만, 가속도를 주는 것은 동일한 가속도를 주는 것이기 때문에 질량과 무관하게 속도가 변한다.
- 충격량이란, 일정 시간동안 가해졌던 힘들의 합
I = F·Δt
I = 충격량(kg·m/s)
F = 힘(kg·m/s²)
t = 시간(s)
Force = 질량 x 거리 / 시간²
Impulse 질량 x 거리 / 시간
🎯 그렇다면 게임에서 어떻게 활용할 수 있을까?
3D에서의 힘을 가하는 방식은 총 네 가지가 있다.(Force, Impulse, Acceleration, VelocityChange)
2D에서의 힘을 가하는 방식은 총 두 가지가 있다.(Force, Impulse)
Force : 질량에 영향을 받으며 지속적으로 힘을 가할 때
Impulse : 질량에 영향을 받으며 순간적으로 힘을 가할 때(1초)
Acceleration : 질량에 영향을 받지 않고 지속적으로 힘을 가할 때
VelocityChange : 질량에 영향을 받지 않고 순간적으로 힘을 가할 때(1초)
💡 TIP
물리학 계산에서는 FixedUpdate(0.02초, 1초에 50번)를 사용함
Force * 50 = Impulse
Force / Fixed Timestemp(0.02) = Impulse
// C#
boxRigidbody.AddForce(transform.right * movePower / Time.fixedDeltaTime, ForceMode.Force);
boxRigidbody.AddForce(transform.right * movePower, ForceMode.Impulse);
// 위 코드와 아래 코드는 같은 뜻이다.
boxRigidbody.AddForce(transform.right * movePower / Time.fixedDeltaTime, ForceMode.Acceleration);
boxRigidbody.AddForce(transform.right * movePower, ForceMode.VelocityChange);
// 위 코드와 아래 코드는 같은 뜻이다.