언리얼 엔진

언리얼엔진 공부 복습용 -7- 충돌(1)

인똑이 2022. 10. 3. 14:14

드디어 게임 다운 시스템을 만들 수 있는데 바로 콜리전을 이용한 충돌 시스템이다.

 

BP_Player의 콜리전

플레이어의 손은 플레이어의 콜리전을 벗어나 장애물을 그냥 뚫고 갈 수 있다.

이처럼 충돌은 콜리전들을 이용한 트리거 시스템이다. (무언가 작동되는것 ex)Block 등등)

 

충돌에도 여러가지 종류가 있을 수 있는데 이는 사용자가 사용하기 나름인것 같다.

대표적인 예시로는

콜리전들끼리 겹치기 시작했을때

 

콜리전들이 겹쳐있는 상태일때

 

콜리전들이 겹쳐지지 않을때 - (떼어질때)

 

등등 있지만 위 3가지가 대표적으로 많이 사용되어질것이다.

 

아무튼 충돌은 그러한 시스템이므로 한번 간단하게나마 익혀보자.

우선 간단하게 BP_Collision이란 BP를 Actor를 상속받고 생성한다.

그 후 BP를 연다음 컴포넌트 추가에 Box Collision을 추가한다.

그럼 이상한 주황색처럼 박스 모양이 생길 것이다.

 

Collision은 보이지 않는다.

아까 만든 BP_Collision을 맵위에 올리고 실행한번 해보자. 보이지않는다.

BP_Collision에서 Hidden In Game 체크박스에 체크를 없애보자. 그럼 게임을 실행하면 보인다.

이제 저 콜리전 박스는 다양한 효과를 가질 수 있다. 

첫번째 예시로 Block 효과를 살펴보자면 말그대로 통과할 수 없게 만들어 준다.

이는 콜리전부분의 콜리전 프리셋에서 적용할 수 있으며 각종 타입을 블록할건지, 아니면 무시할건지, 겹침을 허용할건지 선택할 수 있다. 무시와 겹침의 차이는 충돌을 일으킬건지 아닐건지라고 보면된다. 무시는 진짜 없는 존재취급한다.

각각이 무엇을 막고 통과시킬지 정하는거니 이것은 각자 만져보면서 익혀보길 바란다. 참고로 Player같은경우는 Pawn이다.

 

아무튼 플레이어의 콜리전과 저 박스의 콜리전을 충돌 시켜보자.

그러나 지금은 아무런 반응이 없다.

박스 콜리전의 수많은 이벤트들

왜냐하면 아직 충돌되었을때 어떻게 하라고 지정해주지 않았기 때문이다.

간단하게 플레이어가 해당 콜리전과 충돌했을때 불빛이 나는 트리거를 만들어보자. 

 

우선 아까 그 BP_Collision에 포인트라이트를 추가해주고.범위가 너무크니 조절해주자. 그리고 Y축으로 살짝 올려주자.

이제 맵에는 이렇게 보일것이다.

 

그러나 우리는 플레이어가 올라가야 색이 표시되기로 했으니 먼저 BP_Collision이 게임이 실행되었을 때 불이 사라지게 해주자.

포인트라이트를 드래그하고 Set Visibilty를 추가시켜준다.

이는 포인트라이트의 Visibilty를 세팅한다는것을 말한다.

간단하게 New Visibilty가 비활성화 된것만으로 게임을 실행하면 라이트가 보이지 않는다. 

그렇다면! 충돌되었을때 똑같이 New Visibilty를 활성화 시킨다라고 만들어주면 플레이어가 충돌할때 불이 켜질 것이다.

박스의 On Component Begin Overlap의 이벤트를 추가시켜준다. (초록색 버튼누르면됨.) - 오버랩되었을때 작동된다 라는뜻

이후 위에거랑 똑같이 해두고 New Visibilty만 활성화 시켜준다.

그러면 이제 박스와 충돌하면 빛이 켜지는것을 볼 수 있다.

여기서 이제 문제는 플레이어와 박스가 이제 멀어져도 계속 빛이 켜져있다는 것인데

이는 충돌이 끝났을때 아무것도 안해줘서 켜진상태 그대로인거다. 

위에처럼 충돌이 끝났을 때를 추가해주면

 

충돌이 끝날때

이러면 이제 들어가면 빛이 켜지고 나가면 꺼지는 간단한 충돌 트리거 완성이다~~

오늘한것은 아주 간단한 충돌에 대한 개념이므로 그냥 이런것이 있다라고 생각해도되고 좀더 깊게 들어가면 이제 어떤 클래스가 충돌했는지 조건이 만족할때 충돌과 아닐때 충돌등 다양하게 사용할 수 있는것이 충돌이다. 

더 자세한것은..!

 

다음에 계속...