언리얼 엔진

UE5) 총알 충돌 구현

zzugest1 2025. 2. 21. 01:16

https://zzugest1.tistory.com/66

 

UE5) 플레이어 물체 발사

https://zzugest1.tistory.com/65   이동과 마우스 회전이 가능한 플레이어에서 물체를 발사하는 기능을 구현하고자 한다.   물체를 발사하는 키를 입력하기 위해 입력 액션을 하나 만들어주고, 입력

zzugest1.tistory.com

 

캐릭터 클래스에서 총알을 발사하는 것까지 구현한 뒤 총알이 물체와 충돌하는 것을 구현

 

 

Bullet 클래스로 들어와 왼쪽 함수 부분에 Impulse를 추가한다.

 

그 다음 impulse함수를 눌러 오른쪽 디테일 창에 입력 부분을 아래와 같이 추가해준다.

 

Other과 OtherComp는 말 그대로 다른 물체, 물체의 컴포넌트라는 뜻으로 자료형을 액터, 프리미티브 컴포넌트 타입을 검색해줘서 지정해줘야한다. 

 

그렇게 Impulse에 입력칸이 아래에 생기면 Add Impulse at Location을 검색해 추가해준다. 부딪힌 물체에 충돌을 가한다는 뜻이다. Get Velocity는 총알의 날아가는 속도를 뜻한다. 여기에 곱연산을 플로트(단정밀도)로 설정 후 숫자를 곱해주면 그만큼 속도가 증가한다.

 

그 다음 Bullet의 이벤트 그래프에 

Event Hit을 검색해 추가한다음 Impulse함수를 검색해 추가한다. 위와 같이 선을 이으면 총알의 충돌이 발생한다. 

 

실험을 위해 부딪힐 액터 박스를 하나 만든다음 박스의 디테일 창에 들어가

 

피직스 시뮬레이트를 활성화 한 다음

 

콜리전프리셋을 BlockAll로 바꿔준다. 이는 모든 물체와 부딪히도록 만든다. 그렇게 박스를 필드위에 배치하면

 

박스가 Bullet에 부딪혔을때 날아가는 것을 볼 수 있다.

 

총알에도 피직스 시뮬레이트를 켜야 물체와 부딪히는걸 볼 수 있어 두 번 발사해야 총알끼리 부딪혀 날아가게 한다는 단점이 있다.

 

 

 

두번째로 총알이 충돌시 두 물체가 사라지게 하는 법을 구현해보겠다.

Bullet의 이벤트그래프에 함수 Destroy를 만들어 다음과 같이 만들어 준다.

 

 

Destroy함수의 입력값은 Target Actor(총알에 맞아 파괴될 액터)와 Hit Comp(충돌하는 액터, 여기선 총알 자신)을 만든다.

Destroy Actor함수를 불러 총알에 부딪힌 물체를 먼저 파괴하고, Bullet 컴포넌트를 소유한 액터(Get Owner)가 날아와 부딪혔다면(Is valid) 그 물체도 같이 없애준다(오른쪽 Destroy Actor). 만약 유효하지 않는 경우도 대비해(Bullet이 아니여도) 삭제하는 걸로 한다.

 

 

그 다음 Bullet의 이벤트 그래프에 만들었던 Event Hit에 Destroy함수를 위와 같이 이어준다. 실험을 위해 Bullet의 피직스 시뮬레이트를 꺼준다.

 

 

총알이 박스와 부딪혀 두 물체가 사라지는 것을 볼 수 있다.

'언리얼 엔진' 카테고리의 다른 글

UE5) 플레이어 점프 구현  (0) 2025.03.06
UE5) 플레이어 애니메이션  (0) 2025.03.05
UE5) 플레이어 물체 발사  (0) 2025.02.20
UE5) 플레이어 방향 설정  (0) 2025.02.19
UE5) 플레이어 생성  (0) 2025.02.18