오버 슈트 나 진동없이 차량을 특정 지점으로 이동하고 정지 시키려면 어떻게해야합니까?


9

자, 우리는 2D 위치, 속도, 각속도 및 드래그 / 마찰을 가진 이 질문에 대한 대답에서 설명한 것과 같은 비히클을 가지고 있다고 생각하십시오 . 가변적 인 양만큼 가속 및 차단할 수 있지만 즉시 죽지 않거나 최고 속도에 즉시 도달 할 수는 없습니다. 오버 슈트 나 진동없이 특정 지점으로 이동하여 가능한 가장 빠른 시간에 정지하려면 어떻게해야합니까?

나는 다음과 같은 것을 생각하고 있었다 :

  • 목표 위치로 돌립니다.
  • 가속하다
  • "다음 틱을 적용하면 대상을 오버 슈트 할 것입니까?"
  • 오버 슈트가 발생하면 휴식 시간을 일정량 적용하십시오.

나는 이것이 해결 된 문제라고 확신하며 내가 설명한 방법보다 더 좋은 방법이있을 것입니다.

답변:



3

미적분을 사용하면 속도와 최대 감속 속도를 알고 있으면 최소 정지 거리를 알 수 있습니다. 이를 염두에두고 특정 시점에서 정지하기 위해 브레이크 (반올림 / 양자화 오류는 제외)를 적용해야하는 시점을 정확하게 알 수 있습니다.

자, 수학보다 더 나은 누군가가 실제 공식을 게시 할 것입니다 ...


2
finalPositionDelta = -0.5 * sqr(currentSpeed) / maximumDeceleration그러나 이것은 감속이 일정하다고 가정합니다. 시뮬레이션 깊이에 따라 그렇지 않을 수도 있습니다. 라니에리의 해결책으로 갈 것입니다. (누군가 DIV 감속이 아니라 죄송합니다)
tenpn

예,이 방법은 제어 시스템 문제로 프레임을 구성한 경우에도 여전히 유용합니다. 관련된 기울기를 이해하면 오류 측정에서 불안정성 또는 진동을 피할 수 있기 때문입니다.
Kylotan


1

때로는 게임 개발에서 바로 가기를 사용해야합니다. 여기서 지름길은 임펄스 (impulse)라고하며, 물리적으로 말하면 매우 짧은 시간에 적용되는 매우 큰 힘입니다. 시간이 지남에 따라 통합하는 대신 매개 변수에 직접 변경으로 적용하면됩니다. 속도를 0으로 설정하십시오.

문제는 바로 가기를 사용 하시겠습니까?


2
나는 플레이어에게 보이지 않는 단축키를 걱정하지 않지만, 차량이 그 자리에서 죽을 수 있다면 매우 이상하게 보일 것입니다.
Iain

1
물론, 사실은 감속 후 원하는 지점에서 정확하게 멈추는 데 도움이되므로 복잡한 계산을 피하고 시간 단계를 너무 많이 나눌 수 있습니다.
ADB
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.