2D 레벨에서 Recast 그래프를 시연하는 예제 장면

이 예제는 스프라이트와 타일맵을 활용하여 2D 레벨에서 Recast 그래프를 사용하는 방법을 보여줍니다.
장면에서 캐릭터를 클릭하여 이동시킬 수 있습니다.

Contents

Graph setup

2D 모드에서 Recast 그래프를 사용하려면 dimensions 필드를 "2D"로 변경해야 합니다. 또한, RecastGraph.rasterizeColliders 옵션이 활성화되어 있어야 합니다. 2D 모드에서는 Recast 그래프가 메시가 아닌 콜라이더만 래스터화할 수 있기 때문입니다. 그래프의 방향과 크기를 장면에 맞게 조정한 후, 그래프를 스캔할 수 있습니다.

 

가장 눈에 띄는 그래프 설정 변경 사항은 다음과 같습니다:

  • 그래프를 2D 모드로 변경했습니다.
  • 그래프의 셀 크기를 약간 줄여서 세계를 더 정확하게 표현합니다.
  • 캐릭터 반경도 장면에서 사용될 에이전트의 크기를 반영하도록 변경되었습니다.
  • 그래프의 경계 상자가 세계에 맞도록 변경되었습니다.
  • 그래프가 기본값인 메시 대신 콜라이더를 래스터화하도록 변경되었습니다.
  • 'Background Traversability' 설정이 "Walkable"로 설정되었습니다. 이는 장애물이 아닌 모든 것을 보행 가능하게 만들기 위함입니다.

Tilemaps

타일맵은 타일맵 GameObject에 TilemapCollider2D 컴포넌트를 추가하고, 해당 객체가 Recast 그래프의 레이어 마스크에 포함되어 있는 한 Recast 그래프에서 지원됩니다.

Tilemaps and Recast Graph  참조

 


Door

 

빨간 버튼을 클릭하여 열 수 있는 문이 있습니다. 이 버튼을 클릭하면 에이전트가 해당 위치로 이동하고 문을 여는 애니메이션이 재생됩니다. 로직은 Interactable 컴포넌트로 처리됩니다. 에이전트를 버튼으로 이동시키고, 문에 애니메이션을 재생합니다.


문 열기 애니메이션이 시작되면 문에 있는 콜라이더가 비활성화되고, 이로 인해 문에 부착된  DynamicGridObstacle 컴포넌트가 그래프를 처음부터 다시 계산합니다.

참고: 
DynamicGridObstacle  컴포넌트는 원래 그리드 그래프만 지원할 때 이렇게 명명되었습니다. 이제는 Recast 그래프에서도 사용할 수 있으므로 이름이 다소 오해의 소지가 있습니다. 향후 업데이트에서 이름이 변경될 수 있습니다.

 


Chest

 

클릭하여 열 수 있는 상자가 있습니다. 이를 클릭하면 에이전트가 해당 위치로 이동하고 상자를 여는 애니메이션이 재생됩니다. 상자에 대한 자세한 설명은 " Chests" 섹션에 나와 있습니다.

Character animation

캐릭터 애니메이션은 MecanimBridge2D 스크립트에 의해 처리됩니다.

 

velocitySmoothing

에이전트의 속도를 얼마나 부드럽게 할 것인지 설정합니다.
속도는 대략 이 설정 값만큼의 시간 동안 부드럽게 조정됩니다. 값이 0이면 부드럽게 조정되지 않습니다.

참고: 이 설정은 ` Pathfinding.Examples.MecanimBridge2D.velocitySmoothing ` 멤버에 해당합니다.

 

 

naturalSpeed

자연 이동 속도는 애니메이션이 설계된 속도입니다.

예를 들어, 에이전트가 이 속도보다 빠르게 이동하면 애니메이션 속도를 높이도록, 느리게 이동하면 애니메이션 속도를 낮추도록 애니메이터를 구성할 수 있습니다.

참고: 이 설정은 ` Pathfinding.Examples.MecanimBridge2D.naturalSpeed ` 멤버에 해당합니다.

 

 

rotationMode

에이전트의 회전이 처리되는 방식입니다.

RotationMode  참조
참고: 이 설정은 ` Pathfinding.Examples.MecanimBridge2D.rotationMode ` 멤버에 해당합니다.

 

이 에이전트의 경우, 회전 모드를 "Hide"로 설정했습니다. 이는 에이전트의 변환이 회전하지 않도록 하기 위함입니다. 대신, 에이전트가 바라보는 방향을 나타내기 위해 다른 스프라이트가 사용됩니다.

MecanimBridge2D  스크립트는 다음 애니메이터 파라미터를 사용하여 이동 속도를 애니메이터 컴포넌트로 전달합니다:

  • InputMagnitude: 에이전트의 자연 속도로 정규화된 이동 속도입니다. 에이전트가 자연 속도로 이동할 때는 1, 정지해 있을 때는 0입니다.
  • X: 에이전트의 자연 속도로 정규화된 수평 이동 속도입니다.
  • Y: 에이전트의 자연 속도로 정규화된 수직 이동 속도입니다.

애니메이터 컨트롤러에서 루트에는 두 가지 상태가 있습니다: **Moving**과 **Idle**. 이 두 상태는 InputMagnitude가 충분히 높은지 여부에 따라 전환됩니다.


Moving 블렌드 트리는 XY 파라미터에 따라 다양한 애니메이션을 블렌딩합니다. 각 애니메이션은 캐릭터를 애니메이트하기 위해 스프라이트 시퀀스를 재생합니다. Unity가 클립 간을 블렌딩할 때, 블렌드 트리에서 가장 높은 가중치를 가진 스프라이트를 사용합니다. Moving 블렌드 트리는 또한 InputMagnitude 파라미터에 의해 속도가 곱해지도록 구성되어 있어, 에이전트가 이동하는 속도에 따라 애니메이션이 빠르거나 느리게 재생됩니다.

Idle 블렌드 트리도 비슷한 방식으로 구성되어 있지만, 애니메이션이 다릅니다.

'유니티 에셋 > A* Pathfinding project pro' 카테고리의 다른 글

Infinite procedurally generated world  (0) 2024.05.23
Recast graph with off-mesh links  (0) 2024.05.23
Recast graph on a terrain  (0) 2024.05.22
Recast graph with tags  (0) 2024.05.22
Recast graph on a moving surface  (0) 2024.05.22

+ Recent posts