Raycast
- 타일 맵 기반의 맵은 타일 각각이 충돌체를 가지고 있고, 플레이어가 타일과 충돌할 때 적절한 처리를 해주어야 한다.
- 그 중 하나는 플레이어가 타일의 위에 올라왔을 때 Ground 처리를 해주고 그에 따른 애니메이션을 적용해야 한다는 것이다.
- 이 기능을 구현하려면 단순히 플레이어와 타일의 충돌만을 처리하는 게 아니라 어느 방향에서 충돌했는지도 검사해야 한다.
- 이번에는 PhysX에서 GeometryQuery::raycast 함수를 지원해서 이 기능을 사용해보기로 했다.
- raycast 함수는 빛의 원점과 빛의 방향, 그리고 검사할 지오메트리와 Transform을 인자로 넘기면, 충돌 여부에 따라 true, false를 반환해주며, PxRaycastHit 구조체에 어느 지점에 충돌했는지 Pos 값도 같이 확인할 수 있다.
- 이 기능을 통해 PlayerState에서 매 업데이트마다 발 위치에서 아래쪽으로 ray를 쏴서 발 아래 타일이 있는지를 검사하고
타일이 있는 경우와 없는 경우에 따라 상태를 변경하는 등의 처리를 해주었다.
이렇게 함으로써 상태가 변경됐을 때 상태 클래스의 Enter에서 중력을 적용하거나 제거하고, 속도를 조절하는 등 코드의 가독성을 높일 수 있었다.
'게임 개발 > [D2D_Portfolio] DirectX2D 포트폴리오 작업일지' 카테고리의 다른 글
14. Player Interface HUD 구현 (0) | 2023.03.28 |
---|---|
13. Background 및 NPC 추가 (0) | 2023.03.27 |
11. Compute Shader 구현 (0) | 2023.03.25 |
10. Trigger Callback & RigidBody 구현 (0) | 2023.03.23 |
9. Collision Callback 구현 & Tile Tool Erase 기능 구현 (0) | 2023.03.22 |
댓글