BossFight - Boss Colliison Setting

김대겸·2025년 5월 1일

Boss Colliison Setting

이번에는 보스 캐릭터에게 적용할 Collision을 부착해보자

위의 그림처럼 여려개의 BoxComponent를 생성 및 부착 하도록 할 예정이다.

또한 해당 보스는 앞발을 부위 파괴 할수 있도록 구현 할 예정이다. 따라서 BoxComponent를 상속 받아 커스텀 BoxComponent를 만들 필요가 있다.

커스텀 BoxComponent는 기존의 BoxComponent와 동일하나, 추가적으로 부위파괴 가능한 부분과의 연결이 필요하다.

EnemyAttribute에는 총 2개의 부위파괴 가능한 스탯이 있음으로, int형을 통해 구분 하도록 하자

< 부위 파괴 구분 >
int = 0 -> 부위 파괴 불가, 해당부분은 피격 시 HP가 감소
int = 1 -> 피격 시 Part1_HP 감소, Part1_HP 가 0이되면 부위 파괴
int = 2 -> 피격 시 Part2_HP 감소, Part2_HP 가 0이되면 부위 파괴

위의 정리한 내용을 토대로 Class를 작성 해보자.

🎮 UBFCombetBoxComponent.h

UCLASS(ClassGroup = "BF Combet", hidecategories = (Object, LOD, Lighting, TextureStreaming), editinlinenew, meta = (DisplayName = "BF Combet Collision", BlueprintSpawnableComponent))
class BOSSFIGHT_API UBFCombetBoxComponent : public UBoxComponent
{
	GENERATED_BODY()

private:
	UPROPERTY(EditDefaultsOnly, Category = "Part", meta = (AllowPrivateAccess = "true"))
	int32 PartNum;

public:
	FORCEINLINE int32 GetPartNum() const { return  PartNum ;}
};

BoxComponent를 상속 받아 BFCombetBoxComponent를 생성 하였다, 또한 UCLASS매크로를 활용하여 에디터에서도 추가할수 있도록 구현 하였다.

<UCLASS매크로 설명>

  • ClassGroup : "컴포넌트 추가" 메뉴에서 "BF Combet" 그룹 아래에 표시
  • hidecategories : 디테일 패널에서 카테고리 숨기기(Object, LOD, Lighting, TextureStreaming)
  • editinlinenew : 이 클래스를 참조하는 UPROPERTY가 EditInline 속성을 가지고 있다면, 에디터에서 직접 객체를 생성/편집할 수 있게 허용
  • DisplayName : 에디터에서 이 클래스를 읽을 때의 표시 이름
  • BlueprintSpawnableComponent : 이 컴포넌트를 블루프린트 클래스에서 생성자(Default Components)로 추가 가능

마지막으로 블루프린트에서 각 부위에 맞게 BFCombetBoxComponent를 부착 해보자.

Construction Script에서 Attach Component To Component()함수를 통해 각 부위에 해당하는 Socket에 부착하도록 구현 하였다.

작동 영상

다음에는 적 캐릭터의 공격을 구현 해보자.

0개의 댓글