기존 On Component Begin Overlap으로 무기에 충돌체를 둘러 공격판정을 하고 있었는데
이전에도 충돌 정보를 못얻어온다는걸 알았지만 놔뒀다가 결국 충돌 정보가 필요해져
온갖 구글링 + 유튜브 튜토리얼을 뒤져서 방법을 알아내긴했다...
결론부터 말하자면 정교한 물리 시뮬레이션으로 무기 판정을 할려면 On Component Begin Overlap 또는 Tick마다 Trace를 수행해야 하는데 구글링에서 나온 곳 모두 Overlap 방식을 추천하진 않았다.
서버에서 Tick() 마다 Trace를 수행해서 감지한 애들을 가져다가 처리해야 할거 같다.
1) On Component Overlap
충돌 유무를 가장 쉽게 확인가능하나, **충돌 정보를 얻을 수가 없다.
-> 사용해보면 충돌한 Actor는 가져올 수 있으나 HitResult를 까보면 비어있다.
무기에 충돌체를 둘러서 공격판정에 쓸 순 있으나 충돌한 위치 등 정보(FHitResult)를 얻을 수 없어 간단한 공격 판정에만 사용 가능
본래 용도는 진입시 발생하는 트리거나 포탈 기능
2) On Component Hit
일회성 충돌 판정에 사용
Projectile이 충돌을 감지하고 사라질 때나, 지뢰가 충돌을 감지하고 폭발하고 사라질 때 등...
처음에는 이걸 쓰면 되지 않아 싶었는데
콜리전 프리셋을 종일 설정해봐도 도저히 충돌 감지가 안된다.
Projectile에 쓰는건 되던데 애초에 무기에 둘러서 껐다 켰다 여러번 감지할 때 쓰는게 아닌듯.
-> Simulate Physics가 필수적으로 적용되므로 중력이 적용되는 총알 등에 사용
3) Trace
검을 휘두른다고 가정하면 검날의 시작과 끝부분을 Tick마다 LineTrace 해서 새로 감지한 애들을 데미지 처리
솔직히 Tick마다 Trace 떡칠하는건 생각못했는데 Trace 자체가 히트 정보를 제대로 받아올 수 있으니 좋은 것 같다.
이 방법도 결국 무조건 성공하는 것은 아닌게 결국 서버측 Tick이 어느정도 나와야하니 Server Tickrate를 위해 서버측 코드 최적화는 필수일 것이다.
이미지 출처 : https://www.youtube.com/watch?v=PGhng3ARVS4
'UE5' 카테고리의 다른 글
애니메이션 리타겟팅 루트모션관련 에러 (0) | 2024.07.12 |
---|---|
[UE5] Package Build에 Asset 경로 포함 (0) | 2024.07.03 |
[UE5] UWidgetAnimation (0) | 2024.04.06 |
[UE5] LineTraceMultiByChannel (0) | 2024.04.05 |
UE5 Garbage Collection 개요 (0) | 2024.04.02 |