캐릭터가 벽을 걸을 수있게하려면 어떻게해야합니까?


34

나는 거미처럼 움직일 캐릭터를 얻으려고 노력하고 있습니다. 공이 롤업 할 수없는 경사가 상승하면 거미가 천천히 기어 올라갑니다.

마찬가지로, 공중에 직사각형 사각형 플랫폼이 있다면, 가장자리에 도달 할 때 아래로 떨어지지 않고 거미는 계속해서 가장자리를 감싸고 플랫폼의 측면과 아래쪽을 계속합니다 (결국 플랫폼의 둘레를 따라 걷습니다).

다양한 Unity 2D 구성 요소를 살펴 봤지만 거의 성공하지 못했습니다. :(

내 세계의 충돌 경계 대부분은 Collider 2D 구성 요소로 표시됩니다 (중력의 영향을받는 간단한 공에서는 효과가 있지만이 거미 캐릭터에서는 효과가 적습니다).


1
그 게임 : youtube.com/watch?v=ga4Zqq1tXa8 (PS1의 "스파이더", 오래 전에 연주) 영감의 원천이 될 수 있습니다.
tigrou

답변:


43

Karmington이 이미 Gamasutra 기사 에 댓글로 연결되어 있음을 발견했을 때 Walker의 적에게 Asteroid Base 블로그 링크를 게시하려고했습니다 .

아마도 그 자체로 답변으로 조금 더 가시성과 설명을 제공 할 가치가 있습니다.

난 빛나고있어, 오!

트릭은 레이 캐스트 입니다. 이것들은 코드가 충돌을 위해 라인을 따라 스캔하게합니다.

Walker가 표면에 잘 정렬되도록하기 위해 지형에서 2 개의 광선을 발사합니다. 하나는 Walker의 왼쪽에서, 다른 하나는 오른쪽 (빨간색과 노란색 선)입니다.

각 RaycastHit2D 객체에서 표면에 수직으로 향하는 법선 벡터 (자홍색 및 녹색 선)를 얻을 수 있습니다. 두 번의 히트로 노멀을 평균하면 기본 지형 (청록색)을 합리적으로 반영하는 캐릭터에 적합한 방향을 얻을 수 있습니다.

이 방향 선을 따라 힘을 가하여 캐릭터를 지형에 붙인 상태로 유지하거나 (마찰이 적은 경우 약간 미끄러질 수 있음) 워커에서 수행 한 것처럼 평균 광선 교차점에 캐릭터를 수동으로 배치 할 수 있습니다.

캐릭터의 방향을 점진적으로 혼합하여 캐릭터가 진동하거나 로봇처럼 보이지 않도록합니다 (Walker가 모서리를 지나갈 때 법선이 급격히 바뀌지 만 몸은 매끄럽게 움직입니다).

지형에 날카로운 모서리가있는 경우,이 광선을 약간 안쪽으로 기울여서 거미가 90도 절벽의 가장자리를 지나갈 때 돌출 된 광선이 절벽면에 닿을 수 있습니다.

소행성 기지 팀은 또한 워커의 움직임 방향으로 짧은 광선을 촬영합니다 (표시되지 않음). 이렇게하면 90도 오목한 코너로 걸어 갈 때 워커가 걸리지 않습니다.

문서에 따르면 2D 레이 캐스트는 광선이 시작되는 충돌체를 감지한다는 점에서 3D와 다릅니다. 그것은 비린내 들리지만, 테스트에서 이것을 확인하면 레이어 마스크를 사용하여 광선을 등반 가능한 지형 충돌체 만 감지하도록 제한하고 싶습니다.


2D 레이 캐스트가 레이 캐스트의 시작점이 포함 된 충돌체를 감지한다는 것을 확인할 수 있습니다. 그러나 첫 번째 탐지는 항상 거리 0과 광선 방향의 반대 방향으로 반환되므로 쉽게 필터링 할 수 있습니다.
XenoRo

2

이를 위해 사용자 정의 코드가 필요합니다.

기본적으로 문제의 플랫폼과 같이 가장 가까운 물체가 무엇인지 알고 가장 가까운 가장자리와 그 가장자리에서 가장 가까운 지점을 찾은 다음 스파이더의 위치와 회전을 계산해야합니다.

정말 멋지게 만드는 것은 쉽지 않지만 전혀 작동하지 않는 것이 좋습니다.


2
여기에 정말 멋진 링크가 있습니다. 귀하의 사례에 정확히 맞는지 확실하지는 않지만 아마도 ... gamasutra.com/blogs/AdamWinkels/20140220/211306/…
karmington
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.