[UE5] 보스 캐릭터 만들기 (2)

재석 블로그·2025년 4월 22일
0

FoodRumble 개발일지

목록 보기
2/3

과일 발사 패턴


  • 손이 빵야 포즈(나름 손가락이 하나씩 펴지는 준비 동작도 있다)를 취하고 과일을 발사하는 패턴.
  • 발사된 과일은 어딘가에 막히면 부서지며 쪼개진 파티클을 만든다.

BP_Boss_Projectile

  • 과일을 발사하는 패턴 자체, 위 GIF에서 손가락을 하나씩 펴는 애니메이션까지가 여기에 해당한다.
  • 원래는 애니메이션이 양손을 모아 에네르기파를 쏘는 모양이어서 양 손의 스켈레탈 메시 소켓 위치와 그 중간을 구하는 코드가 남아있다.
  • 하지만 그건 중요한 것이 아니고, 그 뒤의 SpawnProjectile() 노드가 중요하다. 여기서 스폰될 발사체와 속도, 지속 시간등을 설정해준다.

BP_Boss_FruitProjectile

  • BP_Boss_ProjectileSpawnProjectile()로 스폰되는 발사체. 맨 위 GIF에서 과일 메시가 이것이다. Niagara Particle System Component를 가지고 있으며, 여기에 등록된 나이아가라 시스템이 실제 플레이에서 보이는 것이다.

  • 발사될 때는 나이아가라 컴포넌트에 설정된 메시가 보이고, 명중 후엔 이 액터는 소멸한다. 소멸하기 전에 HitProjectile()로 소멸 이펙트를 가진 나이아가라 시스템(깨진 과일)을 스폰한다.

NS_Boss_Fruit01

  • 발사체 나이아가라 시스템. 정말 단순한 구성이다.
  1. Spawn Burst Instantaneous - 파티클 단 하나만 0.0초에 생성한다.
  2. Initialize Particle - Lifetime 만 10초로 설정한다. 플레이어나 벽에 맞지 않고 맵 밖으로 나가도 소멸할 수 있도록. -> 이 부분은 어차피 SpawnProjectile()에서 시간이 지나면 나이아가라 컴포넌트가 달려있는 액터 자체를 소멸시키기 때문에 적당히 길게 해도 무방하다.

  3. Add Rotational Velocity - 최초 스폰시 회전값을 설정. Random Range Vector를 이용해 약한 수준으로 무작위 회전을 걸어준다.

    Add Rotational Velocity 모듈의 위치에 주의해야 한다.

    • Particle Spawn
      - 해당 모듈은 파티클 스폰시 한 번만 작용
    • Particle Update
      - 아래처럼 매 프레임 작용
  4. Mesh Renderer - 과일 메시의 핵심. 스프라이트가 아닌 스태틱 메시도 파티클로 사용할 수 있게 된다.

NS_Boss_Fruit01_Destroyed

  • 명중 시 스폰되는 소멸 이펙트
  • NS_Boss_Fruit01Generate Collision Event를 추가해서 처리하려고 했는데, 로직상 명중시 액터 자체가 소멸하기 때문에 분리했다.
  1. Spawn Burst Instantaneous - 발사체와 다르게 2~4개 무작위로 생성
  2. Add Velocity in Cone - 명중 시 과일이 박살나는 반작용 표현을 위해 원뿔 모양으로 가해지는 힘 추가
  3. Add Rotational Velocity - 최초 스폰시 회전값을 설정. 발사체와 동일.
  4. Gravity Force - 박살난 파편이 아래로 떨어지도록 중력 적용

발사되는 메시 랜덤 설정

  • 상술한 부분으로 발사 -> 적중 시 파편 생성은 완료되었으나 아직 해야할 일이 있다.
  • 실제 게임에서는 패턴 발동 시 위처럼 호박만 나가는 것이 아니라 여러 메시가 무작위로 나가는데, 이를 설정해줘야 한다.
  • 이를 위해 먼저 5개의 발사체 나이아가라와 5개의 파편 나이아가라를 준비하였다. 모두 스테이지, 모듈 구성은 동일하고 Mesh Renderer에서 할당한 메시만 다르다.

1. 난수 생성으로 어떤 메시가 발사될 지 고르기

  • BP_Boss_FruitProjectileBeginPlay()에서 무작위 정수를 생성해 저장한다

2. 발사체 메시 설정

  • SetRandomProjectile()은 실행되면 생성된 난수에 따라 나이아가라 컴포넌트에 할당된 나이아가라 시스템을 변경하는 함수(이벤트)이다.
  • SetNiagaraSystemAsset() 노드를 뽑아 순서대로 NS_Boss_Fruit01부터 NS_Boss_Fruit05까지 연결해준다.

3. 파편 메시 설정

  • 동일한 난수를 사용해 파편 나이아가라도 스폰한다.
  • 발사체처럼 나이아가라 컴포넌트에 할당된 나이아가라 시스템을 변경하는 게 아니라 SpawnSystemAtLocation()을 사용했다.
  • 기본적으로 적중 파티클이 생성되는 로직이 있어 HitLocation에 그 위치가 저장되는데, 이를 활용하기 위함.
profile
게임 개발자 재석의 블로그입니다.

0개의 댓글