본문 바로가기
UE5 : Paper 2D (Blueprint)/게임 컨텐츠

[UE5 : Paper2D(BP) - 게임 컨텐츠] Chapter 02. 유닛 충돌

by song.ift 2024. 1. 16.

GitHub : https://github.com/developeSHG/UE5-Paper2D/commit/1ec0877b6ac1a52f60d45735419e34f116540437

 

유닛 충돌 · developeSHG/UE5-Paper2D@1ec0877

hokyung.song committed Jan 23, 2024

github.com

 

 

 


 

 

플레이어와 몬스터 사이에 충돌이 없어서 뚫고 지나가는 현상을 수정해 볼 것이다.

겸사겸사 공격할 때, 피격을 받는 것도 충돌 범위를 이용해서 하는 것이 아닌, 무조건 다음 칸에 있는 대상이 몬스터면 픽업하는 식으로 수정해 볼 것이다. 즉, Collision 박스를 없애는 것.

 

타일에 몬스터가 있는지 체크하기 위해선, 몬스터를 저장할 목록을 Creatures 배열로 관리.

객체를 생성하고, 타일에 배치하면서 Creatures 배열에 Add.

 

다음, Can Go 함수에서 기존에는 벽이 있는지 여부만 Map Grid를 이용해 판별했는데, 해당 좌표에 플레이어나 몬스터가 있느냐 여부를 추가적으로 판별하는 것을 추가.

Creatures 배열을 순회하면서 그 중에 Target의 좌표와 동일하다는 것은 해당 Creature를 찾은 셈.

 

 

기존 Can Go 함수에서 Grid Post Index를 이용해서 해당 위치가 유효한지 1차 체크를 했고, 2차 체크는 맵에 갈 수 있는지 막혔는지 여부를 판별한다. 

통과되면, 위에서 만들어준 해당 타일에 몬스터 여부 체크 함수를 통해 위치 체크를 하고, 결과를 반환.

 

 

 

Collision을 삭제하고, Direction에 따른 영역 좌표를 만들어 해당 위치에 몬스터가 있으면 데미지 처리.

이전에 사용하던 Collision 방식에서 직접 만든 타일맵에 Creature 목록을 이용해 판별.

 

이렇게 이전엔 언리얼 엔진을 활용해서 Collision 체크를 했지만, 타일 단위로 모든 것을 관리해서 판별하는 방식으로 수정해봤다.

댓글