언리얼 - C++ 프로젝트

OpenWorldRpg (12) 프랙처모드

earth-star 2025. 5. 15. 10:43

프랙처모드를 이용하여 부서지는 물체를 구현해 볼 것이다.

 

이전에 만들었던 2D 게임에서는 3D로 부셔지는 물체를 2D로 표현하니 어색해서 구현을 포기했었는데 이번에 칼을 휘둘러서 부서질 수 있도록 해보려고 한다.

항아리 메시를 하나 구해서 프랙처모드로 들어가서 균등으로 하나 만들어준다.

언리얼이 지원하는 블루프린트 클래스에서 필드 시스템이라는 것이 있다.

 

이것을 하나 만들고 위와 같이 구성한다.

 

물체가 부서질 수 있도록 힘을 작용하는 것과 특정 방향으로 힘이 가해져 부서진 파편이 한쪽 방향으로 날아가도록 만든 것이다.

위에 만든 BP 필드시스템을 항아리 옆에 위치시킨다.

게임을 실행하면 위와 같이 항아리가 부셔지며 반대방향으로 날아가는 것을 볼 수 있다.

다음으로 무기에 이 시스템을 적용해야한다.

 

Weapon 헤더파일에 CreateFields 함수를 하나 만든다.

GetHit에서 이 함수가 호출되도록 추가한다.

블루프린트에서 불러와 위에서 만들었던 필드 시스템과 동일하게 만들어 준다.

부서지는 액터를 만들기 위해서 BreakalbeActor 액터 클래스를 만들었다.

 

GeometryCollection을 추가해준다.

에디터에서 디테일의 카오스 피직스창에서 앞서만든 항아리를 추가한다.

HitInterface에서 만들었던 GetHit에 UFUNCTION(BlueprintNativeEvent)를 추가하는데 이것을 추가하면 블프와 C++ 양쪽에서 모두 이벤트를 건들 수 있도록 한다.

GetHit 이벤트에 부모 이벤트를 추가하고 메타사운드로 항아리가 부서지는 소리를 추가하였다.

 

더해 부서지고 3초 뒤 사라지도록 Set Life Span 함수를 추가하였다.

칼이 휘둘러지는 방향대로 항아리가 잘 부서지는 것을 볼 수 있다.