현재 단위의 로컬 회피를 위해 물리 충격력을 시뮬레이션하고 있지만이 방법은 때때로 단위를 형성에서 벗어나 밀어냅니다.
Starcraft 2와 같은 RTS 게임의 경우 로컬 회피는 어떻게 이루어 집니까? 물리가 시뮬레이션되거나 전지전능 한 컨트롤러가 모든 것이 어디에 있어야하는지 결정합니까? 스타 크래프트 2의 로컬 회피 행동을 달성하는 방법에 대해 구체적으로 묻기 때문에이 질문이 약간 광범위하다는 것을 알고 있습니다. 작동하는 것은 매우 감사하겠습니다.
Starcraft 2 (또는 유사한 게임)가 로컬 회피를 처리하는 방법에 대한 유용한 리소스 또는 설명 만 어떤 코드도 찾고 있지 않습니다.
현재 충돌 감지 (침투 벡터 포함), 충돌 력 및 속도에 의한 움직임이 있습니다. 충돌에 대해 모든 유닛이 다른 유닛과 비교하여 검사됩니다. 충돌하는 경우 객체가 침투 벡터에 의해 즉시 오프셋되고 충돌 력이 적용됩니다. 그런 다음 다른 루프는 속도로 객체를 이동하고 속도에 드래그를 적용합니다. 오프셋은 덩어리 진 유닛에 가해지는 과도한 충돌 력의 문제를 완화 시키지만 때때로 유닛이 여전히 쏴집니다.
내가 찾고있는 솔루션은 다음 요구 사항을 충족시켜야합니다 (Starcraft 2에서와 같이).
- 객체가 겹치지 않아야합니다. 또는 적어도 겹치는 부분은 결국 해결되어야합니다.
- 물체는 필요 이상으로 서로를 밀지 않으므로 2 개의 유닛이 서서 서로 옆으로 움직일 수 있습니다.
- 물체가 같은 목적지로 뭉쳐 질 때 이상한 행동이 없어야합니다.
- 다른 크기의 유닛, 심지어 다른 볼록한 모양을 지원할 수 있습니다.
지금까지 내가 생각한 것은 충돌을 감지하는 대신 미래의 충돌을 감지하여 겹침이 발생하지 않도록하는 것입니다. 그런 다음 구속 조건을 적용하여 두 유닛의 속도가 겹치지 않도록하십시오. 나는 여전히 중첩을 넘어 이동을 제한하는 알고리즘을 고민하고 있습니다.