답변:
내가 추천 반면 에 그 일을 경험 이외의 아무것도 자신의 물리 엔진을 압연 (당신이 완료되면 당신은 아마 그것을 멀리 던져해야 실현 - 그것은 모든 edgecases 및 숫자 제한을 얻기 위해 정말 열심히 / 안정성 문제는 정리 , 기존 엔진에 기여하면 시간을 훨씬 더 잘 활용할 수 있습니다.) 다음은 몇 가지 리소스입니다.
풀 홀 레슨 : 원 또는 구 사이의 빠르고 정확한 충돌 감지 원 / 원 및 구 / 구 충돌에 대해 설명합니다.
N 튜토리얼 을 분리 한 축 정리 기반의 탐지 및 대응에 대한 기본적인 이해를위한 훌륭합니다.
Erin Catto는 Box2D의 구현에 대한 모든 GDC 강의를 온라인으로 제공합니다. Box2D에도 필자가 경험 한 간단한 코드가 있습니다.
방법은 다음과 같습니다.
모든 물리 객체에는 다음 벡터가 필요합니다.
직관적으로, 모든 물리 객체에 대해 매 프레임마다 이런 종류의 작업을 수행해야합니다 a
.
a.speed += a.acceleration
a.position += a.speed
함정 : 이것을 오일러 통합 방법 이라고합니다. 이 근사치는 작은 속도와 가속 및 작은 시간 간격으로 더 좋습니다. 게임에서 이것은 일반적으로 사실입니다. 그러나 물체가 얇은 벽쪽으로 또는 다른 움직이는 물체쪽으로 직접 빠르게 이동하는 경우, 물체를 완전히 가로 지르기에 충분한 양만큼 증분 될 때 해당 물체와의 충돌을 건너 뛸 수 있습니다. 빠르게 움직이는 물체가 있는 경우이 문제를 해결 하려면 연속 충돌 감지 가 필요할 수 있습니다.
충돌은 다음과 같은 순서로 근사 할 수 있습니다.
불연속 시점에서 발생하기 때문에이를 불연속 충돌 감지라고합니다. 각 단계마다주의를 기울여야합니다.
를 들어 두 개의 원 : 그 중심이 더 떨어져 자신의 반지름의 합보다 경우 그냥 확인.
를 들어 두 개의 사각형 : 확인 자신의 코너 좌표의 다른 사각형 내에있는 경우.
들어 더 복잡한 다각형을 포함 아무것도 , 당신은해야합니다 분리하기 축-정리 또 다른 질문에 대한 주제입니다.
함정 : 실제로 고려해야 할 다른 충돌 유형이 많이 있습니다. 볼록 다각형은 여러 번 교차 할 수 있습니다 !
충돌을 해결하는 간단한 방법 은 충돌 탐지에서 얻은 값을 사용하여 최소 침투 로 변환하는 것 입니다. 이것은 본질적으로 가능한 최소 이동 거리로 물체를 분리하는 것과 관련이 있습니다.
예를 들어, 원 중 하나가 제자리에 고정 된 원-원 충돌을 고려하십시오. 최소 변위 벡터는 중간 점 벡터 간의 차이와 동일한 방향을 갖습니다. 길이는 반경의 합과 중심 사이의 거리의 차이입니다.
이 아이디어는 다른 모양으로 쉽게 일반화됩니다.
함정 : 충돌하는 두 물체가 움직일 수있는 경우, 움직임의 근사치를 얻기 위해 두 거리를 전체 거리의 일부만큼 움직여야 할 수도 있습니다. 분명히 다른 방향으로 움직여야합니다.
발생하는 가장 확실한 것은 하나 또는 두 개의 객체가 방향을 바꾸는 것, 즉 속도 벡터를 회전시키는 것입니다. 이것은 구현하기가 매우 쉽습니다.
함정 : 물체는 탄력적 일 수도 있지만 그렇지 않을 수도 있습니다 .이 경우 시스템의 총 에너지가 줄어 듭니다. 공기 저항으로 인해 드래그 가 필요할 수 있습니다 . 마찰 (특히 정적 마찰 )은 구현하기 가 매우 복잡합니다 .
시뮬레이션하려는 경우 현실 시뮬레이션이 기하 급수적으로 어려워집니다. 셀 수없이 많은 최첨단 사례, 엄청나게 어려운 공식 및 끊임없이 증가하는 연구 논문의 지뢰밭으로 들어가고 있습니다.
당신의 요구가 단순하거나 배우고 싶어한다면, 그것을 시도하십시오.
요구 사항이 복잡하거나 수학을 좋아하지 않는 경우 물리 엔진 을 통해 세부 사항을 살펴보십시오. Box2D 와 Bullet 은 게임에서 꽤 인기가 있습니다.
나는 이것이 유용 할 수 있다고 생각한다 : http://gafferongames.com/game-physics/integration-basics/
아마도 가장 포괄적 인 튜토리얼 스타일 리소스
는 다음과 같습니다.
http://www.wildbunny.co.uk/blog/2011/04/06/physics-engines-for-dummies/
같은 블로그의 관련 기사를 참조하십시오 :
http : // www.wildbunny.co.uk/blog/2011/04/20/collision-detection-for-dummies/
http://www.wildbunny.co.uk/blog/2011/03/25/speculative-contacts-an- 연속 충돌 엔진 접근 부분 -1 /
내가 만난 게임 물리학을 배우는 가장 좋은 자료는 "스파이 파티"의 크리스 해커 (Chris Hecker) 때문입니다.