강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

dhqks6님의 프로필 이미지
dhqks6

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

6강 캐릭터 공격 판정

캡슐 드로우 관련 질문입니다.

작성

·

116

0

수업 자료 중에 Half Height가 캡슐의 반구 부분을 제외한 몸통 부분의 절반 높이라고 표현되어있고, 수업 코드상 수치도 그렇게 계산 된 것으로 보입니다.
하지만 아무리 테스트해 봐도 판정 범위와 다른것 같아 테스트 결과와 함께 질문드립니다.

image.pngimage.png

위 사진은 수업 코드와 그 실행 결과입니다.
NonPlayer의 캡슐와 닿지 않아도 충돌 처리 된 모습입니다.
아래 사진은 Half Height에 캡슐의 반구 크기를 포함 시킨 수치를 적용한 코드와 그 실행 결과입니다. 그려진 캡슐과 정확히 겹칠 때 충돌 처리된 모습입니다.

image.pngimage.pngimage.png

그래서 아래의 자료에서 초록색으로 표기한 길이가 Half Height인지, 혹은 수업 자료의 Half Height는 맞지만 DrawDebugCapsule함수의 인자만 초록색 표기된 부분으로 사용하는 것인지 질문드립니다!!

image.png



답변 2

0

이득우님의 프로필 이미지
이득우
지식공유자

일반적인 캡슐 도형에서의 Half Height는 보통 반구(Hemisphere)가 시작되는 직전까지의 거리를 의미하는데, 언리얼 엔진은 이와 다르게 Half Height를 반구를 포함한 개념으로 정의해 사용하고 있습니다.
이 부분은 강의 노트에 반영해두겠습니다.

dhqks6님의 프로필 이미지
dhqks6
질문자

넵 감사드립니다!

0

안녕하세요, 인프런 AI 인턴입니다. dhqks6님,

질문해주신 내용은 언리얼 엔진에서 캡슐의 Half Height와 충돌 범위에 관한 것입니다. 이 개념은 개발자들에게 혼동을 줄 수 있는데, 기본적으로 언리얼 엔진에서 “Capsule Half Height”는 캡슐의 전체 높이에서 반구 부분을 제외한 몸통 부분의 절반 높이를 의미합니다. 하지만 디버그 캡슐을 그릴 때 사용하는 DrawDebugCapsule 함수에서는 계산이 약간 달라질 수 있습니다.

캡슐의 Half Height

언리얼 엔진의 캡슐은 기본적으로 두 개의 반구와 하나의 원통으로 구성됩니다:
- Radius: 캡슐의 반구 부분의 반지름입니다.
- Half Height: 이 값은 원통의 중심에서 양쪽 반구의 중심까지의 거리로 정의됩니다. 캡슐의 반구를 포함하지 않는 원통 부분의 절반 높이를 의미하지만 실제 계산에서는 반구의 반지름 값이 포함되기도 합니다.

DrawDebugCapsule 함수의 사용

디버그 용도로 캡슐을 그릴 때 사용하는 DrawDebugCapsule 함수는 이 Half Height 계산을 다르게 해석할 수 있습니다. 정확한 충돌 범위를 시각적으로 확인하기 위해서는 반구의 반지름을 반영한 계산이 적절할 수 있습니다.

  • 기본 Half Height의 경우, 캡슐의 중심 기준으로 반구를 포함하지 않은 부분을 측정할 수 있습니다.
  • 디버그 캡슐을 그릴 때에는 필요한 경우 반구의 반지름을 포함하여 계산하여 충돌 영역이 정확히 반영되도록 합니다.

결론적으로, 두 번째 시도에서 반구의 반지름을 포함한 Capsule Half Height 설정이 더 정확한 결과를 제공합니다. 이는 게임에서의 충돌 판정을 보다 정확하게 반영하는 데 유리합니다.


[기존 질문과 답변에서의 유사한 내용]이 있습니다:

  • 입문에서 Lab 중…: 이 링크에서는 유사하게 디버그 캡슐의 Half Height 계산에 대해 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dhqks6님의 프로필 이미지
dhqks6

작성한 질문수

질문하기