2013-02-12 2 views
-3

게임을 프로그래밍하고 있는데 중력을 추가하고 싶습니다. 수식을 찾거나 이처럼 someting을 시도했는데 다른 방법이 있습니다. 내가 realistique 중력을 시뮬레이트하고 물체가 바닥에 닿아있을 때 약간의 리바운드를 만들 수있는 수식을 찾고 있어요. 내 하찮은 영어 실력에 죄송하다는 말씀을 드리고 싶습니다.프로그래밍 중력

+3

이것은 질문이 아니며 go go go "게임 물리 Java 예제 코드" – Shark

+0

리바운드는 충돌 감지로 수행됩니다. 중력은 그것과 아무 상관이 없습니다. 단지 물체의 속도를 수정하십시오. – nhahtdh

+2

y (t) = - 4.9 * t^2 + v_y_0 * t + y_0 – iamnotmaynard

답변

1

지구 표면 근처에서 모든 낙하 시체의 중력 가속도는 일정합니다 (공기 저항 무시). xf = x0 + v0*t + (1/2)*g*t^2 수식은 초기 위치가 x0이고 초기 (수직) 속도가 v0이고 시간이 t 인 최종 위치가 xf 인 개체를 떨어 뜨릴 것입니다. g은 고도와 기타 요소에 기술적으로 조금 의존하는 상수이지만 9.81 m/s 부근입니다.

리바운드를 수행하려면 먼저 충돌 감지를 수행해야합니다. 충돌을 감지하면, 서페이스에 수직 인 벡터를 계산할 필요가 있습니다. (표면이 수평면이면 간단합니다.) 속도 벡터를 "반영"합니다. ~ 그 벡터 (법선 벡터 즉, 당신은 평평한 표면에서 튀어 오르고 있습니다, 이것은 속도 v을 반전시키는 것입니다). 이것을 현실로 만들기 위해서는 바운스 후에 약간의 댐핑을 적용해야합니다 : 속도 벡터를 반영하는 것 외에도, 바운스 후에 반영하는 방법에 따라 속도 벡터를 스케일링하고 싶을 것입니다. 하나 또는 둘 모두의 구성 요소).

실제로 시나리오를 시뮬레이션하려면 다양한 기술을 사용할 수 있습니다. 포인트 목록을 미리 계산 한 다음이를 통해 또는의 오일러의 방법이나 다른 방법을 사용하여 시뮬레이션 할 수 있습니다. 수치 직교 기술 (사다리꼴 규칙, Runge Kutta 등).

+0

thx, 중력이 작동하지만 스프라이트를 바운스 시키려면 속도를 뒤집을 필요가 있다고 말하지만 수식을 인쇄하면 – user2065368

+0

200 * 100 = 200 * 100 * 200 * 100 * 200 * 200 * 100 * 200 */위치 Y : 200 // -203.99 = 0 + (-15 * 13.599) 1/2 * 9.81 * (13.599 * 13.599) // 위치 Y : 202 // -205.499 = 0 + (-15 * 13.699) 1/2 * 9.81 * (13.699 * 13.699) // 위치 Y : -203 // – user2065368

+0

안녕하세요, 제 문제를 고쳤습니다. 저는 xf에서 제 입장을 정하고 저는 myPosition.y + = xf; – user2065368