본문 바로가기

UE5(언리얼)

[언리얼5/UE5] 다양한 총 사용하기 - 2 (피격 대상 판별)

반응형

 

총이 피격하는 곳을 알기 위해서

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번의 문제도 여기서 발생되었을 확률이 높다. 

 

이렇게 바꿔주니 문제가 다 해결되었다. 

반응형