문제는 당신이 당신의 물리학 실수를했다입니다! 그러나 그것은 쉬운 수정이기 때문에 괜찮습니다.
스프라이트의 위치에서 업데이트 방법을 호출 할 때 먼저 가속을 설정해야합니다. 중력은이 게임에서 상수라고 생각합니다. 그래서 한 번만 설정하면됩니다. (-9.81 등)
y 방향의 문자 속도를 velocity = old_velocity + acceleration * time으로 업데이트하려고합니다.
이렇게 한 다음 비슷한 방식으로 위치를 업데이트합니다. position = old_position + velocity * time.
위치를 업데이트하는 데 사용하는 방정식은 delta가 시간 경과가 아닌 총 경과 시간 인 경우에만 유효합니다! (저는 델타가 시간 단계라고 생각했습니다. 물리학 게임이 보통 프로그래밍되는 방식이기 때문입니다.)
이 도움이 되었기를 바랍니다. 더 많은 것을 알고 싶다면 수완 방정식을보고 싶을 것입니다. 처음 속도와 일정한 가속도를 안다면 최종 포지션을 계산할 수 있습니다. 점프와 충돌을 할 때마다 속도가 달라지며, 그래서 그것이 현실적이지 않다는 것을 놀라지 않습니다! 궁금한 점이 있으시면 의견을 보내 주시면 더욱 도움이 될 것입니다.
편집 : OpenGL을 사용하여 그려진 일부 상자를 사용하여 수행 한 작업을 정확히 다시 프로그래밍했습니다. 위치 업데이트 방법이 작동하지 않는 것 같습니다. 박스는 dt
또는 timestep이 1.0d 인 경우에만 제대로 표시되는 것으로 보이며 이유가 확실하지 않습니다. 그런 다음 무언가와 충돌하면 튀는 대신 모두 멈 춥니 다. 왜 그런지 정확히 모르겠습니다. v = u + a*t
및 s = s_last + v*t
상자가 예상대로 정확히 떨어지고 제대로 반사 :
그러나, 나는 또한 내가 설명하는 물리학을 사용하여 화면에 또 다른 상자가 있습니다. 간소화로 인해 튀는 에너지가 손실됩니다.
두 번째 운동학 방정식을보십시오 : http://physics.info/kinematics-calculus/ 제 방정식은 같습니다. – bluestunt
예, 그렇지만 불행히도 이러한 유형의 작업에는 유효하지 않습니다. – user3728501
방정식이 계산하는 내용을 이해합니까? 설명하면 도움이 될까요? 에드워드 (Edward)가 말했듯이, – user3728501