언리얼 부서지는 오브젝트
- 프로그래밍/언리얼
- 2024. 12. 18.
언리얼 부서지는 오브젝트
언리얼5에서 부서지는 오브젝트를 만드는 방법에 대한 내용입니다.
Geometry Collection
Fracture Mode를 선택하고 New를 눌러줍니다.
이름 설정하고 저장하면 Geometry Collection이 생성됩니다.
생성된 Geometry Collection을 선택하고 다양한 Fracture설정 중에서 Planar를 골라보겠습니다.
이후 Fracture Hierachy를 들어가서 0 으로 되어있는 SM_Claypot_01a를 눌러줍니다.
여기가 잘리겠구나 라는 생각이 들도록 만드는 무언가가 나타납니다.
아래 사진에서는 항아리 중간에 생겼네요.
Fracture을 눌러 줍니다.
대충 이런식으로 0 밑에 두개가 생겼습니다.
이제 이걸 위에서 떨어뜨려보면!
아까 설정한 부분으로 두조각이 되는것을 확인할 수 있었습니다.
Breakable Actor
기존에 만들었던 Actor는 부서지는 오브젝트 말고 다른 내용도 포함되어 있어 새로운 Actor를 만들었습니다.
특별한 것이 필요한 것은 아니라서 간단하게 블루프린트로 만들었습니다.
1. Breakable Actor.
Actor 하나를 만들어서 GeometryCollection(cpp에선 UGeometryCollectionComponent)을 추가합니다.
GeometryCollection에 위에서 만든 GeometryCollection을 넣어줍니다.
2. GeometryCollection 설정.
Chaos Physics->Events->Notify Break=true;
Collision->Generate Overlap Events=true;
auto Activate = false;
3. Break Event추가.
GeometryCollection-> Add Event-> On Chaos Break Event추가.
부서질때마다 사운드가 나오게 됩니다.
FieldSystem [Weapon]
Weapon Actor.
Weapon Actor에서 공격할 때 Create Fields 함수를 실행하도록 설정했습니다.
1. 공격 시 Trace실행.
-공격 시 Trace를 실행하여 충돌하는지 확인합니다.
2. 충돌 대상 확인.
- 충돌한 경우 Actor인지 확인합니다.
3. CreateFields 함수 호출.
- 충돌한 대상이 Actor인 경우, CreateFields함수를 실행합니다.
- 해당 함수는 C++에서 BlueprintImplementableEvent로 설정되어 있어, 블루프린트에서 마저 구현했습니다.
Component.
FieldSystem 추가.
RadialVector 추가.
RadialFalloff 추가.
FieldSystemMetaDataFilter 추가 -> Details-> Field -> ObjectType=Destruction으로 설정.
CreateFields함수.
(여기서부턴 틀릴 수 있음.)
Set Radial Fallloff : 필드 효과가 거리(반경)에 따라 감소하는 정도를 설정.
-Field Magnitude : 필드의 최대 세기 설정.
-Min Range : 필드 효과가 최소한으로 작동하는 거리.
-Max Range : 필드 효과가 최대한으로 적용되는 거리.
-Default Value : 필드의 기본 값. 영향을 받지 않는 영역에 적용될 값.
-Sphere Radius : 필드가 영향을 미치는 최대 반경.
-Center Position : 필드의 중심 위치.
-Falloff Type : 거리 감소 방식.
Field System Meta Data Filter : 필드 효과를 특정 오브젝트에만 적용하기 위해 메타데이터 기반 필터링.
-Meta Data : 필드가 적용될 대상 오브젝트의 조건을 정의.
Add Transient Field : Field System Component에 필드를 추가하는 역할.
-Enable Field : 필드 활성화 여부를 설정.
-Physics Type : 물리 효과의 타입 설정.
* External Strain (외부 압력을 적용하는 필드 타입, 물체를 파괴함)
* Linear Force (선형 방향으로 힘을 적용, 파괴되지 않은 물체 특정 방향으로 밀어냄).
이건 솔직히 빼도 될거같기도.
Set Radial Vector : Radial Vector는 방사형으로 힘의 방향과 세기를 설정.
-Field Magnitude : 필드의 힘의 세기.
-Center Position : 필드 중심의 위치를 설정.
실행 결과.
무기에 Chaos Field System을 적용해 Breakable Actor를 파괴하는 예시 동영상.
https://youtu.be/tSogCG-M02A?si=GCT-uj0Gu5Ja4rJT