언리얼엔진 공부 복습용 -10- 충돌(4)

2023. 6. 4. 13:28언리얼 엔진

저번에 라인트레이스 충돌을 통해 캐릭터의 색을 바꿔보았다.

이번에는 좀더 심화과정으로 

트리거를 통해 충돌처리를배워보자.

 

우선 게임에서는 충돌이 한두개가아니고 여러개이상인 경우가 보통인데

충돌트리거를 설정할때 Actor of Class로 찾는것은 맵에 해당 액터가 작을때 용이했고

트리거처럼 충돌트리거들이 많을때는 어떤 충돌 트리거를 원하는지 특정하기가 어렵다!

 

그래서 트리거들을 많이 사용할때는 Tag라는것을 사용한다!

 

 

우선 전에 작업하던게 언리얼 업데이트하면서 날아가서 지금부터 새로 시작하는 마음으로 진행하겠습니다 ㅠㅠ

오늘은 폭발 시키는 충돌 트리거를 만들겠습니다.

우선은 기획은 이렇습니다!

오르막길에 트리거를 밟으면

폭발지점에서 폭발이 일어나며 그 주변에있는 오브젝트들을 밀어냅니다.

거기에 폭발 이펙트까지 실행시켜줍니다.

 

한번 가보죠.

우선 액터를 상속받는 BP를 두개만듭니다!

폭발이 실행되는 BP와 트리거 BP입니다.

사실 언리얼에서 제공해주는 기본 충돌 트리거와 똑같은 기능을하지만 그 트리거는 레벨블루프린트에서 설정시켜줘야하는 번거로움이있어서 이렇게 따로만듭니다. (이게 더 번거로울수도있음 헤헤..)

 

그리고 맵에 두개를 올려줍니다. 그러나 그냥올리면 안보이기때문에

BP_Explosion은 큐브를 BP_ExplosionTrigger는 Box콜리전을 추가해줬습니다.

그럼 이제 태그를 설정해줍니다.

폭심지에 둔 BP_Exposion을 선택하고 액터에 태그를 작성해주세요.

이제 이 태그를 통해 월드에 배치된 Actor를 찾을 수 있습니다.

저는 Explosion으로 설정해두었습니다.

그럼이제 트리거 BP를 열고

이벤트 그래프에서 게임시작시 해당 태그를 가진 액터를 찾습니다.

이러면 이제 해당 태그를 가진 액터를 찾고 해당 액터를 BP_Explosion에 캐스트하고 해당 내용을 BP_ExplosionRef 변수로 저장해줍니다.

 

그리고 이제 저장한 BP_ExplosionRef를통해 우리는 BP_Exposion의 기능에 접근가능해졌습니다.

그럼 BP_Exposion에 새로운 커스텀이벤트를 만들고 Explosion이벤트라고 하겠습니다.

이 이벤트를 통해 주변에 오브젝트 들을 검사하고 밀쳐내는것을 구현합니다.

그리고 트리거에서는 오버랩 이벤트를 설정하여 Box콜리전에 충돌되면 위에 저 이벤트가 실행되게 만들었습니다.

 

우선 테스트를해봐야하니 폭심지는 크기를 줄여주고 주변에 큐브를 배치합니다. 피직스시뮬레이트를 체크하고요(날라가야하니깐)

폭발 이벤트가 시작되면 구체형태의 트레이스를 통해 오브젝트를 충돌시키는것을 구현했습니다.

스타트와 엔드는 폭심지의 위치

검출될 오브젝트 타입은 배열만들기를 통해 피직스바디로 바꿔줍니다(움직이는 오브젝트)

드래그 디버그 타입을 설정하면 충돌범위가 보이게됩니다.

그후 반복문을통해 우선 충돌된 액터이름을 출력시켜주는 것을 만들었습니다.

 

충돌된 오브젝트들이 잘 보입니다.

아까 이름찍어주는것을 삭제하고 힘으로 밀쳐주는 함수로 대체해줍니다. 

HitCompnent에 있는 함수입니다.

그럼 한번 들어가봅니다.

위에서 Strength값을 조절하여 날라가는 힘을 조절가능합니다.

이제 잘날라간느거같으니 이펙트를넣어줘보겠씁니다.

오브젝트를 모두 날리면 이펙트가 나오게했습니다. (거의 동시라 문제없음)

이미터 템플릿에 원하는 폭팔 이펙트를 넣어주세요. (저건 기본)

그리고 위치와 크기를 조절을 해도됩니다.

 

그러면 짠 완성입니다!! (디버그 지워도 됩니다)