총이 피격하는 곳을 알기 위해서
DrawDebugCamera를 사용해보자
GetActorLocation(), GetAcotorRotation()을 사용한다면 당연히 내가 원하는 곳을 보는 카메라를 얻을 수 없을 것이다.
한 번 클릭미스가 나서 2개가 그려진겁니다 :(
총알 충돌처리가 되야 피격처리가 원활하기 때문에
Collision을 추가합니다. ( Edit -> Project Setting -> Collision 에서 Trace Channel에 buller 추가)
Bullet의 Default Response를 Block으로 했으니
수정할게 조금있다.
No Collision은 Ignore로
OverlapAll 에서도 Overlap으로
이제 점을 찍어 봤다.
pPos = location ( 카메라 위치 ) + 바라보는 방향 * Range
그림과 같이 점이 찍힘, 방향도 정확하다 좋다!
이제 아까 만든 Bullet 충돌 판정을 만들어서 피격까지 가보자
아까 우리가 직접 만든 Bullet 판정은 어떻게 하냐
복잡해보이지만 간단하다 천천히 따라해보자
한줄 정리
내 프로젝트 파일 위치로 간다 -> Config 파일 -> DefaultEngine.ini 파일 -> control + F (찾기) Bullet (아까 만든 trace이름)
그럼 이것을 찾을 수 있따
ECC_GameTraceChannel1임을 확인할 수 있다.
이것을 사용하면 된다.
이것을
LineTraceSingelByChannel 함수를 이용해서 충돌판정을 내자
이제 충돌이 된다.
근데 뭔가 이상하다.
아래서 헤맸던 부분을 정리해뒀다. 그것들을 해결하니 정상적으로 잘 된다.
헤맸던 부분
hit.TranceEnd라고 했다가 부딪힌 부분에 사각형이 안나타나서 고생했다. ( hit.TranceEnd X , hit.Location O)
ECollisionChannel::ECC_EngineTraceChannel1로 했다가 Collision이 안일어나서 고생했다.
( ECC_EngineTraceChannel1 X, ECC_GameTraceChannel1 )
EngineTraceChnnel1은 엔진에 기본으로 탑재되어있는 trace들이라고한다.
여기서 많이 배웠다.
1. LineTraceSingleByChannel을 통해서 얻는 Hit에 사각형을 그려보니
자꾸 캐릭터 몸에 사각형이 그려졌다.
그래서 LineTraceSingleByChannel 시작 부분을 총구로 바꿔주었다. (해결되었다)
2. location, rotation이 묘하게 이상했다.
너무 하단으로 쏴지거나, 너무 상단으로 쏴지거나
GetPlayerViewPoint에서 값을 받아오고 바로 end값으로 사용하기 때문에 GetPlayerViewPoint에서 잘 못 받아오고 있는 확률 99.9%였다.
spring Arm이 너무 경사져있다. 이게 문제 같아보인다.
1번의 문제도 여기서 발생되었을 확률이 높다.
이렇게 바꿔주니 문제가 다 해결되었다.
'UE5(언리얼)' 카테고리의 다른 글
[언리얼5/UE5] 멀티플레이개론 및 간단한 실행 (3) | 2024.09.20 |
---|---|
[언리얼5/UE5] 다양한 총 파지하기 -3 (데미지 입히기, 달리기(스프린트), 반동) (0) | 2024.09.19 |
[언리얼5/UE5] 다양한 총 사용하기 - 1 (파지, 발사 shoot effect) (3) | 2024.09.16 |
[UE5/언리얼5] Animation Retargeting (0) | 2024.09.13 |
[UE5/언리얼5] 블루프린트(BluePrint)튜토리얼 - 데이터(DataTable) 입력하기 #10 (0) | 2023.12.14 |