Karmington이 이미 Gamasutra 기사 에 댓글로 연결되어 있음을 발견했을 때 Walker의 적에게 Asteroid Base 블로그 링크를 게시하려고했습니다 .
아마도 그 자체로 답변으로 조금 더 가시성과 설명을 제공 할 가치가 있습니다.
트릭은 레이 캐스트 입니다. 이것들은 코드가 충돌을 위해 라인을 따라 스캔하게합니다.
Walker가 표면에 잘 정렬되도록하기 위해 지형에서 2 개의 광선을 발사합니다. 하나는 Walker의 왼쪽에서, 다른 하나는 오른쪽 (빨간색과 노란색 선)입니다.
각 RaycastHit2D 객체에서 표면에 수직으로 향하는 법선 벡터 (자홍색 및 녹색 선)를 얻을 수 있습니다. 두 번의 히트로 노멀을 평균하면 기본 지형 (청록색)을 합리적으로 반영하는 캐릭터에 적합한 방향을 얻을 수 있습니다.
이 방향 선을 따라 힘을 가하여 캐릭터를 지형에 붙인 상태로 유지하거나 (마찰이 적은 경우 약간 미끄러질 수 있음) 워커에서 수행 한 것처럼 평균 광선 교차점에 캐릭터를 수동으로 배치 할 수 있습니다.
캐릭터의 방향을 점진적으로 혼합하여 캐릭터가 진동하거나 로봇처럼 보이지 않도록합니다 (Walker가 모서리를 지나갈 때 법선이 급격히 바뀌지 만 몸은 매끄럽게 움직입니다).
지형에 날카로운 모서리가있는 경우,이 광선을 약간 안쪽으로 기울여서 거미가 90도 절벽의 가장자리를 지나갈 때 돌출 된 광선이 절벽면에 닿을 수 있습니다.
소행성 기지 팀은 또한 워커의 움직임 방향으로 짧은 광선을 촬영합니다 (표시되지 않음). 이렇게하면 90도 오목한 코너로 걸어 갈 때 워커가 걸리지 않습니다.
문서에 따르면 2D 레이 캐스트는 광선이 시작되는 충돌체를 감지한다는 점에서 3D와 다릅니다. 그것은 비린내 들리지만, 테스트에서 이것을 확인하면 레이어 마스크를 사용하여 광선을 등반 가능한 지형 충돌체 만 감지하도록 제한하고 싶습니다.