ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Hitbox with DNFTransform
    게임 클라이언트 개발/MakeDNF 2023. 12. 2. 00:28

    카메라를 회전하지 않고 2.5D 좌표계를 구현함에 따라 Unity의 Collider를 사용하여 충돌 기능을 구현할 경우, 불필요한 충돌 연산을 수행한다.

     

    예를 들어, 아래 그림과 같이 캐릭터와 파이어볼이 위치한다면, DNFTransform의 XZ평면에서 캐릭터와 파이어볼의 Collider가 서로 충돌하지 않았기 때문에 충돌 검사 로직을 수행할 필요가 없다. 하지만 캐릭터가 점프할 경우 두 Collider가 충돌하기 때문에 불필요한 충돌 연산이 수행된다.

    불필요한 충돌 계산 예시

     

    Hitbox

    이를 방지하기 위해 Hitbox를 직접 구현했다. Size, Offset, Pivot 세 가지 변수를 통해 Hitbox를 설정하였다.

    • Size : Hitbox의 크기를 설정한다. Hitbox의 모양이 Circle일 경우 Z값은 무시된다. Size의 값은 항상 0 이상이다.
    • Offset : 오브젝트의 위치로부터 Hitbox가 얼마나 떨어질지를 설정한다.
    • Pivot : Hitbox를 Scale 할 경우 기준점을 설정한다. Pivot의 값은 0과 1 사이이다.

     

    Hitbox Editor

    다만 Collider를 사용하지 않고 직접 Hibox를 구현해서 설정한 값에 따라 Hitbox가 어떻게 설정되는지 Scene에서 확인할 수 없었다. 이를 Scene에서 시각적으로 확인하고 Hitbox를 설정할 수 있도록 Editor Tool을 작성하였다. 각 버튼을 통해 Edit Mode를 전환할 수 있도록 구현했다.

    • F1 : 씬에 화살표가 보이지 않도록 EHitboxEditMode를 NONE으로 설정한다.
    • F2 : Size를 수정할 수 있도록 EHitboxEditMode를 SIZE로 설정한다.
    • F3 : Offset을 수정할 수 있도록 EHitboxEditMode를 OFFSET으로 설정한다.
    • F4 : Pivot을 수정할 수 있도록 EHitboxEditMode를 PIVOT으로 설정한다.
    • Left Ctrl : Y축과 Z축이 겹쳐 보이기 때문에 수정하기 불편했다. XZ 평면을 수정할지 XY 평면을 수정할지 선택할 수 있다.

    Size를 (1, 1, 1)에서 (2, 2, 2)로 설정한 경우
    Offset을 (0, 0, 0)에서 (1, 1, 0)으로 설정한 경우
    Pivot을 (0, 0, 0)에서 (0.5, 0, 0.5)로 설정한 경우
    Left Ctrl을 눌러 수정할 평면을 선택할 수 있다.

     

    '게임 클라이언트 개발 > MakeDNF' 카테고리의 다른 글

    Skill 시스템 구현 및 개선  (0) 2024.01.10
    DNF Input System  (0) 2023.12.11
    DNF 충돌 시스템  (0) 2023.12.03
    2.5D 좌표계, DNFTransform  (0) 2023.12.01
    프로젝트를 시작하기 전에  (0) 2023.11.29
Designed by Tistory.