안동민 개발노트

본문 시작

캐릭터와 무기 관련 간단한 이펙트

애니메이션과 소켓에 차징·피격·무기 궤적·총구 화염·탄피 효과를 연결해 캐릭터 액션의 시각 피드백을 구현합니다.

캐릭터와 무기는 플레이어가 자주 보는 대상이므로, 움직임과 액션에 반응하는 파티클 이펙트가 피드백 역할을 합니다.

발자국이나 마법 효과처럼 캐릭터·무기 이펙트도 블루프린트와 애니메이션 시스템과의 연동을 기준으로 설계해야 합니다.

이 절에서는 캐릭터와 무기에 적용할 수 있는 간단하지만 효과적인 파티클 이펙트들을 제작하는 방법에 대해 알아보겠습니다.


캐릭터 관련 이펙트 제작

캐릭터 관련 이펙트는 주로 캐릭터의 움직임, 상태 변화, 특정 스킬 사용 시 발생합니다.

스킬 시전/차징(Charging) 이펙트

스킬을 사용하기 위해 힘을 모으거나 대기할 때 나타나는 효과입니다.

  • 나이아가라 시스템 (NS_SkillCharge)
    • 스폰/초기화
      • Spawn Rate: 낮게 시작하여 차징 시간에 따라 점차 증가.
      • Lifetime: 비교적 짧게 (0.5 ~ 1.0초).
      • Sprite Size: 작게 시작하여 크게.
      • Color: 스킬의 속성(예: 불 스킬은 주황, 전기 스킬은 파랑).
      • Initial Location: 캐릭터 주변 (Sphere 또는 Cylinder 형태) 또는 특정 소켓(손, 발)에 부착.
      • Initial Velocity: 캐릭터를 향해 안쪽으로 모이거나, 회전하면서 위로 솟아오르도록.
    • 물리/힘
      • Point Attraction Force: 캐릭터 중심과 입자 위치가 같은 좌표 공간인지 확인하고 중심 방향으로 힘을 적용합니다. 임의의 음수 벡터가 항상 중심을 향하지는 않습니다.
      • Noise Force / Curl Noise Force: 에너지가 휘몰아치거나 불규칙하게 진동하는 느낌을 줍니다.
    • 시간에 따른 변화
      • Scale Color: 시간에 따라 색상이 밝아지거나, 마지막에 강렬하게 빛나도록 조절.
      • Scale Sprite Size: 파티클이 생성되었다가 커지면서 캐릭터에게 흡수되는 느낌.
    • 렌더링: Additive 또는 Translucent 블렌드 모드의 Unlit 머티리얼을 사용하여 발광하는 에너지 또는 스파크 텍스처를 사용합니다.
    • 블루프린트 연동
      • 캐릭터 블루프린트에서 스킬 차징 상태에 따라 Niagara Particle System 컴포넌트의 User.ChargeAmount 등 실제로 만든 사용자 변수를 업데이트합니다. Niagara의 Spawn Rate·색·크기 모듈이 그 값을 읽도록 바인딩해야 합니다.
      • 차징이 완료되거나 취소될 때 Deactivate를 호출하고 기존 입자가 수명을 마칠지 즉시 제거할지 수명 주기 정책을 정합니다. 취소·Actor 종료 경로에서도 같은 정리를 수행합니다.

피격(Hit/Impact) 이펙트

캐릭터가 공격받았을 때 발생하는 짧고 강렬한 효과입니다.

  • 나이아가라 시스템 (NS_CharacterHit)
    • 스폰/초기화
      • Spawn Burst Instantaneous: 필수. 한 번에 스폰. Spawn Count는 피격 강도에 따라 조절.
      • Lifetime: 매우 짧게 (0.1 ~ 0.3초).
      • Sprite Size: 작게 시작하여 빠르게 확장.
      • Color: 피격 속성(예: 물리 공격은 붉은색 스파크, 독은 녹색, 마법은 보라색).
    • 물리/힘
      • Add Velocity: 피격 방향의 반대 또는 사방으로 강하게 퍼지도록.
      • Gravity Force / Drag: 피격 파편이 빠르게 떨어지고 사라지도록.
    • 시간에 따른 변화
      • Scale Color: 순간적으로 밝게 터졌다가 어둡고 투명하게 사라지도록.
      • Scale Sprite Size: 빠르게 확장하고 수축하는 충격파 느낌.
    • 렌더링: Additive 또는 Translucent 블렌드 모드의 Unlit 머티리얼. 스파크, 파편, 피, 연기 등의 텍스처 사용.
    • 블루프린트 연동
      • Point Damage의 Hit Location·Hit Normal 또는 유효한 Hit Result를 전달받은 게임플레이 이벤트에서 Spawn System at Location을 호출합니다. Event AnyDamage 자체는 Hit Result를 제공하지 않습니다.
      • Location: 피격 지점 (Hit Result의 Impact Point).
      • Rotation: Make Rot From Z로 Impact Normal을 회전으로 변환합니다. 로컬 +Z로 방출한다면 별도 월드 법선을 다시 같은 회전에 적용하지 않습니다.
      • Auto Activate false로 생성한 반환 컴포넌트에 Set Niagara Variable로 선언된 User 값을 설정한 뒤 Activate합니다. DamageType 클래스는 그대로 Float에 넣지 말고 효과 색·정수 분류 등 실제 Niagara 입력으로 변환합니다.

무기 관련 이펙트 제작

무기 관련 이펙트는 공격 액션, 피격, 발사 등 무기의 기능과 직접적으로 연결됩니다.

무기 휘두르기(Swing/Trail) 이펙트

검, 도끼 등 근접 무기를 휘두를 때 발생하는 잔상 또는 에너지 궤적 효과입니다.

  • 나이아가라 시스템 (NS_WeaponSwing)
    • 스폰/초기화
      • Spawn Rate: 보통 (20 ~ 50).
      • Lifetime: 짧게 (0.2 ~ 0.5초).
      • Sprite Size: 작게 시작하여 크게.
      • Color: 무기/스킬 속성 (예: 불검은 주황, 얼음검은 파랑, 일반 검은 흰색/회색).
    • 물리/힘
      • Add Velocity: 무기 이동 방향으로, 또는 회전 방향으로.
      • Noise Force: 약하게 적용하여 흔들리는 느낌.
    • 시간에 따른 변화
      • Scale Color: 수명에 따라 투명하게 사라지도록.
      • Scale Sprite Size: 수명에 따라 퍼지면서 커지도록.
    • 렌더링
      • Sprite Renderer: 에너지, 스파크, 바람 가르기 텍스처.
      • Ribbon Renderer: 소켓에 붙은 Niagara 컴포넌트가 World Space 입자를 연속 생성하도록 하여 이전 위치들을 연결합니다. Ribbon ID·연결 순서·Width를 맞춥니다. 렌더러만 추가하거나 모든 입자를 Local Space로 두면 과거 월드 궤적과 달라집니다.
      • Material: Additive 또는 Translucent 블렌드 모드의 Unlit 머티리얼을 사용합니다.
    • 블루프린트 연동
      • 애니메이션 몽타주(Anim Montage)에서 무기를 휘두르는 애니메이션 구간에 애니메이션 노티파이(Anim Notify)를 추가합니다.
      • 이 노티파이에서 Niagara Particle System 컴포넌트의 Activate 노드를 호출하여 이펙트를 켜고, 스윙 끝에서 Deactivate합니다. Notify State 구간을 쓰고 몽타주 중단·무기 교체·스킬 취소 시에도 정리합니다. 정상 종료 Notify만 기다리지 않습니다.
      • 무기 소켓에 Spawn System Attached를 사용하여 파티클 시스템을 부착합니다.

총구 화염(Muzzle Flash) 및 탄피 이펙트

총기 발사 시 총구에서 뿜어져 나오는 화염과 탄피가 튀어나가는 효과입니다.

  • 나이아가라 시스템 (NS_MuzzleFlash)
    • 스폰/초기화
      • Spawn Burst Instantaneous: 필수. 한 번에 소량 스폰.
      • Lifetime: 극히 짧게 (0.05 ~ 0.1초).
      • Sprite Size: 작게 시작하여 빠르게 확장.
      • Color: 밝은 주황/노랑/빨강.
    • 물리/힘
      • Add Velocity: 총구 전방으로 강하게, 미세한 노이즈 추가.
    • 시간에 따른 변화
      • Scale Color: 순간적으로 최대 밝기 -> 즉시 투명하게 사라지도록.
      • Scale Sprite Size: 빠르게 확장했다가 사라지도록.
    • 렌더링: Additive 블렌드 모드의 Unlit 머티리얼. 총구 화염 텍스처(주로 SubUV).
    • Light Renderer: 짧은 시간 동안 총구 주변을 밝히는 용도로 활용. (성능 주의)
  • 탄피 배출 나이아가라 시스템 (NS_ShellEject)
    • 스폰/초기화
      • Spawn Burst Instantaneous: 1개 스폰.
      • Lifetime: 짧게 (0.5 ~ 1.0초).
      • Mesh Renderer 사용. Mesh Scale을 실제 탄피 크기에 맞게 작게 설정.
      • Initial Velocity: 탄피 배출구에서 옆/뒤로 튕겨나가도록.
    • 물리/힘
      • Gravity Force: 강하게 적용하여 탄피가 지면으로 떨어지도록.
      • Drag: 적당히.
      • Collision: 표면 반응이 필요할 때 추가하고 반발·마찰을 조절합니다. 입자 충돌은 탄피의 완전한 rigid-body 구름 운동을 보장하지 않습니다. Collision 바로 뒤에 Solve Forces and Velocity를 둡니다.
      • Particle Spawn에서 초기 Mesh Orientation을 정하고 Particle Update의 Update Mesh Orientation 등 실제 회전 모듈을 사용합니다. 변수를 선언하기만 해서는 회전이 적용되지 않습니다.
    • 렌더링: Mesh Renderer에 탄피 메쉬 할당. Default Lit 셰이딩 모델 사용.
  • 블루프린트 연동
    • 총기 블루프린트나 캐릭터 발사 로직에서 Spawn System Attached (총구 화염) 및 Spawn System at Location (탄피 배출) 노드를 사용합니다.
    • 총구 Socket에 부착하고, 발사 시점에 정확히 스폰되도록 합니다.

캐릭터/무기 이펙트 연동 기준표

효과시작 입력공간 기준종료 조건
차징게임플레이 상태 시작손·무기 소켓완료·취소 모두 Deactivate
무기 궤적Notify State 시작World Space 잔상구간 종료·몽타주 중단
피격판정에서 전달한 표면 정보Impact Point·Normal단발 Burst 완료
총구 화염실제 발사 이벤트총구 소켓짧은 Once 재생
탄피실제 발사 이벤트배출 소켓에서 월드로Lifetime 종료

최적화 및 연동 팁

  • 애니메이션 노티파이 적극 활용: 캐릭터/무기 관련 이펙트는 애니메이션과 완벽한 타이밍을 맞추는 것이 중요하므로, 애니메이션 시퀀스/몽타주에 Anim Notify를 추가하여 나이아가라 시스템을 활성화/비활성화하거나, Spawn System 노드를 호출합니다.
  • 데이터 인터페이스 활용: 캐릭터의 속도, 현재 체력, 무기 정보 등을 명시적으로 바인딩한 User Parameter나 지원되는 Actor Component Interface·커스텀 DI를 통해 이펙트를 동적으로 조절합니다.
  • 조건부 스폰: 특정 조건(예: 공격이 빗나갔을 때, 낮은 체력일 때)에서만 이펙트가 발생하도록 블루프린트에서 Branch 노드를 활용하여 스폰 로직을 제어합니다.
  • 오브젝트 풀링: 총구 화염이나 피격 이펙트처럼 짧은 시간 동안 매우 자주 발생하는 효과는 Niagara Component Pool이나 커스텀 풀링 시스템을 사용하여 성능 오버헤드를 줄입니다.
  • World Scale 고려: 캐릭터와 무기는 게임 월드의 스케일에 직접적인 영향을 받으므로, 파티클의 크기나 속도 등을 월드 스케일에 맞게 조절합니다.

발사·피격의 게임 판정과 표시 이벤트를 구분하고, 반복 공격과 취소를 함께 확인합니다. 소켓이 사라지거나 무기가 교체될 때 컴포넌트가 남지 않아야 하며, 풀에서 회수된 컴포넌트 참조를 다시 조작하지 않습니다.