본문 바로가기
언리얼 최고/언리얼 멀티플레이

언리얼엔진(UE4)/멀티플레이/collision 채널을 사용해 조건부 충돌 설정하기!

by Lee_story_.. 2022. 6. 24.
728x90

이번엔 어떤 특정 엑터를 캐릭터가 통과할수 있도록 한번 만들어 보겠습니다!

 

 

아래는 제가 이번 프로젝트에서 이 방법을 사용한 부분입니다.

저는 큰 맵을 여러 스테이지로 나누어 플레이하는 방식의 게임을 만들어보았는데요

스테이지를 나누는 부분에서 collision과 visible을 사용하여 처리해 보았습니다!

 

물론 액터를 삭제 해버리면 매우 간단하게 해결될 문제이지만 저는 멀티 플레이 게임을 만들었기 때문에

스테이지를 클리어한 사람만 통과할수있는 그런 기능을 구현해 보았습니다!

 

 

여기까지가 설명!

 

이제 시작하죠!

 

가장 먼저 채널을 만들어 볼껀데요 

여기서 채널이란 오브젝트의 유형이라고 보시면 될 것 같습니다.

기본적인 액터들은 월드 스태틱으로 설정되어있고  캐릭터는 pawn 등 이미 지정된 타입을 가지고 있을겁니다!

 

 

만드는 방법은 프로젝트세팅 >> 콜리젼 >> 새 오브젝트채널 클릭!

적당한 이름으로 block으로 생성해주시면 됩니다!

 

이렇게 만들어 놓고 아무 액터블루프린트나 들어가서 collision을 확인해봅시다

아마 원래있던 타입에서 방금 만든 타입이 추가 되어 있을겁니다!

 

 

바로 캐릭터 collision에 가서 프리셋을 custom 방금만든 채널을 무시하게 만든다면?

그 타입의 액터들을 모두 무시하는 캐릭터가 만들어집니다!

 

하지만 여기서 저는 스테이지를 클리어하면 통과!  라는 조건이 있기에

 

따로 함수를 만들어 주겠습니다.

 

이번에 사용할 함수는 set collision response to channel!

위에서 설정했던것 처럼 채널을 무시,겹침,블록 중 어떻게 할지 설정해주는 함수입니다!

기본적으로 저 함수를 사용하면 되지만

 

 

멀티플레이로 하려면 이쪽으로 

더보기

 

 

멀티플레이시 서버와 클라이언트를 나누어 주어야합니다...

 

2개의 커스텀이벤트를 만들어주고 

 

switch has authority 함수로 authority(서버)는 바로 모두에게 리플리케이트 해주고

Remote(클라이언트)는 서버에서 한번 실행해주고 모두에게 리플리케이트 되게끔 만들어 줍시다!

 

일단 이렇게 채널을 통해 통과하는 함수를 만들어 보았고 이제 실행하러 가봅시다

 

 

저는 여기서 visible도 같이 설정해보겠습니다.

( visible이 필요 없으시면 캐릭 블프에서 위에서만든 함수 실행 하시면되요! )

 

먼저 맵에 설정되어있는 액터를 건드려야하기에 레벨블루프린트로 이동합시다.

 

먼저 컨트롤러에서 스테이지별 클리어변수를 가져오고

 

클리어했다면 아까 만들어둔 함수를 실행해줍시다.

 

그후 setvisibility를 사용해서 타깃으로 액터를 연결!

 

여기까지가 멀티플레이 게임에서 클리어한 플레이어에게만 울타리? 를 넘어갈수있게, 안보이게 한번 만들어 보았습니다.

 

 

 

이건 제가 스스로 생각해서 만든거라 다른 좋은 방법이 더 많이 있을것 같네요.... 찾으시면 댓글 달아주세요!

 

 

 

 

틀린 점이 있다면 댓 달아주세요!

댓글