추종 조향 동작에서 궤도 피하기


9

나는 (고정적인) 목표를 추적하고 충격을주기 위해 행동을 추구 하는 미사일을 가지고 있습니다 .

미사일을 발사 할 때 밟지 않는 한 잘 작동합니다 . 당신이 싸우고 있다면, 미사일은 목표를 선회하는 경향이 있습니다.

여기에 이미지 설명을 입력하십시오

먼저 목표에 접선 방향으로 가속 하고 속도의 접선 구성 요소를 먼저 종료 한 다음 대상에 대해 beelining하여이 문제를 해결했습니다.

여기에 이미지 설명을 입력하십시오

따라서 vT가 거의 0이 될 때까지 -vT로 가속합니다. 그런 다음 vN 방향으로 가속합니다.

그것이 작동하는 동안, 나는 미사일이 접선 구성 요소를 먼저 명시 적으로 죽이지 않고 대상에 영향을 줄 수있는보다 우아한 솔루션을 찾고 있습니다.


스티어링 알고리즘이 무엇인지 설명하지 않고 만족스러운 답변을 얻을 수 있다고 생각하지 않습니다. 문제가 휴리스틱에 있다고 확신합니다.
sam hocevar

1
실제로 이것은 내가 사용한 답입니다
bobobobo

답변:


5

문제는 미사일이 현재 속도에 관계없이 목표물을 가리키고 있다는 것입니다. 미사일에 추력이 운동 선을 벗어날 수있는 최대 각도를 지정하십시오.

각 안내 반복에서 대상에 수직 인 속도를 계산합니다. 속도의이 구성 요소를 제로화하기 위해 엔진을 얼마나 기울여야하는지 파악한 다음 엔진을 기울일 수있는 최대 값으로 자릅니다.

비행 중 첫 번째 부분은 그림 2에서 직선의 오른쪽으로 약간 이동하지만 엔진이 날아 가면 엔진 이이 구성 요소를 제로로 만들고 대상으로 곧장 향하게됩니다.

이 시나리오에서는 엔진에 0 또는 최대 값 이외의 변형이있는 프레임이 하나만 있습니다. 움직이는 목표물을 추적하는 경우 목표물이 움직일 때마다 모든 사이클에서 더 적은 처짐을 얻을 수 있습니다.


4

그것은 당신이 추구하는 우아한 해결책이 아닐 수도 있지만, 미사일을 늦추면 미사일을 놓치면 목표물에 접근 할 때 효과적으로 추적하고 더 빠르게 회전하고 목표물에 부딪 칠 수 있음을 발견했습니다. 속도를 줄이지 않고 미사일의 회전 속도를 높일 수는 있지만, 플레이어는 '놀랐을 것입니다'라는 놀라운 놀라움을 줄 수 있습니다.

이것은별로 좋아 보이지 않을 수도 있지만, 연료가 다 떨어질 때까지 미사일의 궤도와 적의 미사일 발사를 확실히 막습니다.

여기 내 구현을 결합한 데모가 있습니다 (세 번째 또는 네 번째 미사일이 이것을 보여주고 다시 1:05로 보여줍니다) : http://www.youtube.com/watch?v=9uiGMC_nH2w

또한 미사일이 목표물에 접근 할 때 정확도가 향상 될 수 있습니다 (잠금 할 서명이 더 가깝기 때문에). 비디오에 약 1 분 정도 표시됩니다. 빨간색 원은 미사일의 실제 목표를 나타냅니다. 이것은 장거리에있을 때 혼란스러운 비행 경로를 제공하고, 가까워 질수록 곧게 펴게됩니다.

내가 말했듯이, 그것은 당신이 찾고있는 대답이 아닐 수도 있지만, 조금이라도 도움이되기를 바랍니다.


꽤 멋지다. 나는 (당신이 "트릭 미사일"을 호출하면 사용할 수 있습니까?) 최대 가속 가고 있지만 미사일 천천히 아래로있는 것은 깔끔한 트릭
bobobobo

4

직관

한 가지 방법이 있습니다 : 다이어그램을 회전 시키십시오.

원래 문제 삽화의 회전

이제 로켓은 대포입니다 !

물리학

발사 위치에서 목표까지 벡터에 수직 인 고정 된 가속 "하향"을가집니다. 나는 그것을 파선으로 그린 ​​선으로 그렸습니다. 이를 reference horizon 이라고합시다 . (이 기준 수평선은 일정합니다! 로켓은 고정 위치에서 목표 위치로 고정 위치에서 발사되었습니다.)

우리는 ( wikipedia에서 ) 공기 저항이없는 대포에 대해 알고 있습니다 d = v^2 * sin(2 * theta) / g.

  • d 수평으로 이동 한 거리 (발사 위치와 목표 사이의 거리)
  • v 발사체의 발사 속도는
  • theta발사체가 발사 된 수평선의 각도 ( 기준 수평선 에서 발사 방향 벡터 )

의 방정식을 재정렬하여 g제공합니다 g = v^2 * sin(2 * theta) / d.

슛 방정식의 정수, g중력 가속도로 인해 . 로켓 추진으로 인한 가속도 를 의미 할 수 있습니다 . 그것도 괜찮습니다 – 그것은 여전히 일정한 방향으로 일정한 가속 입니다 .

이제 뭐?

g로켓을 발사 할 때 그 방정식을 실행하십시오 . 목표물을 맞추기 위해 기준 수평선을 향해 수직으로 로켓을 얼마나 가속해야하는지 알려줍니다. 그 가속 방향은 일정하기 때문에 궤도가 형성되지 않습니다.

팔.


이것은 깔끔한 접근법입니다. 나는 이것이 로켓이 원을 추적 하게 할 것이라고 생각한다 . 당신은 목표에 영향을 미치는 원을 선회하는 데 필요한 구심력을 공급하고있다. 나는 이것이 마리오 카트에서 붉은 껍질에 사용 된 접근 방법 이라고 생각합니다. 왜냐하면 나는 그것이 항상 원호 모양을 그리는 경향이 있다고 생각했기 때문입니다.
bobobobo

여기에 적용된 힘은 구심력이 아닙니다. 힘의 방향은 기준 수평선에 수직이며, 대상이 정지되어 있으면 변경되지 않습니다. 이것은 궤도 동작이 일어날 수 없음을 의미합니다.
Anko

더 명확하게하기 위해 답변을 편집했습니다.
Anko

@Anko : OP의 경우에 대한 트리거 인 것처럼 움직이는 수학에서 수학이 효과가 있는지 확실하지 않습니다.
Mooing Duck

@Mooing 당신이 맞습니다. 목표물이 예측 가능하게 움직이고 예측 물을 목표로하는 경우에만 목표물을 움직일 수 있습니다. 질문 구체적으로 첫 번째 문장에서 목표가 고정되어 있다고 언급합니다.
Anko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.