[UE] 타격 구현 (Camera Shaking, Hit Stop)
목차
타격 구현(Camer Shaking, Hit Stop)
BP: Blueprint Class
BS: Blend Space
ABP: Animation Blueprint
AN: Blueprint Class AnimNotify
ANS: Blueprint Class - AnimNotifyState
E: Enum 열거형
DT: Data Table
F: 구조체
UE2212_02
Level - LEVEL ABP_Player BP_GameMode |
|||
AdvancedMagicFX12 |
Materials | ||
Meshes | |||
Particles | |||
Textures | |||
Character | Animation | Common |
|
Sword | |||
Unarmed |
|||
BlendSpaces | BS_Fist BS_Sword BS_Unarmed |
||
Materials |
MaterialLayers |
||
M_UE4Man_Body M_UE4Man_ChestLogo |
|||
Mesh | SK_Mannequin SK_MAnnequin_PhysicsAsset Skel_Mannequin |
||
Montages |
Common | HitReaction_Move_Montage HitReaction_Stop_Montage |
|
Fist | Fist_Attack_1_Montage Fist_Attack_2_Montage Fist_Attack_3_Montage Fist_Hitted_Montage |
||
Sword | Draw_Sword_Montage Sword_Attack_1_Montage Sword_Attack_2_Montage Sword_Attack_3_Montage |
||
Enemy_DeadFall_Montage HitReaction_Montage |
|||
Textures | UE4_LOGO_CARD UE4_Mannequin__normals UE4_Mannequin_MAT_MASKA UE4Man_Logo_N |
||
Weapons | Sword |
||
Component | EStateType MovingComponent StateComponent WeaponComponent |
||
Effects | P_Cube_Mesh_Test P_Genno_Weapon_Lightning_01 |
||
Enemies | BP_Enemy | ||
Environment |
Materials | Textures | |
Meshes | |||
Obstacle | |||
InfinityBladeEffects |
Effects |
FX_Combat_Base | |
FX_Materials | |||
FX_Meshes | |||
FX_Monsters | |||
FX_Textures | |||
FX_Textures_IB | |||
Masters | |||
Materials | M_Mesh M_White_Inst M_Red_Inst M_Green_Inst M_Blue_Inst M_UE4Man_Body_Inst M_UE4Man_ChesLogo_Inst |
||
Meshes | Cone_2 Cube_2 Cylinder_2 Sphere_2 |
||
Notifies | ANS_Equip ANS_Combo ANS_Collision AN_BeginAction AN_EndAction |
||
Player | BP_Player | ||
Sounds | S_BGM S_HitPunch S_OneHand_Hit |
||
Fist | Combo_Fist - Blueprint Class Actor Weapon_Combo 상속 DT_DoAction_Fist DT_Equip_Fist DT_HitData_Fist |
||
Weapons |
Sword | Combo_Sword - Blueprint Class Actor Weapon_Combo 상속 CS_Sword DT_DoAction_Sword DT_Equip_Sword DT_HitData_Sword |
|
EWeaponType FDoActionData FEquipData FHitData Weapon - Blueprint Class Actor Weapon_Combo - Blueprint Class Actor Weapon 상속 M_Weapon |
게임의 요소 - 타격
타격감을 결정지는 요소
- Animation 애니메이션 (ex. Hit Stop 경직)
- Sound 사운드
- Effects 이펙트
- Camera Effect 카메라효과 (ex. Camera Shaking)
- Vibration 진동 ()
이번시간에 Hit Stop, Camera Shaking 구현!
리플렉션
enum A
{
Test, Sword,
}
class string
{
}
리플렉션
자료형의 타입을 변수로 다루어주는 기능. 위의 string을 type-id로만 다룰 수 있는데 언리얼C++블루프린트에서는 변수로 다룰 수 있다.
Camer Shaking
Sine Wave & Perline Noise
Sine Wave
- 규칙적인 패턴에 자주 이용
Amplitude, Time Period and Frequency of a Vibration - GeeksforGeeks
Perline Noise
- 구름, 지형과 같이 랜덤한 것을 구현할 때 사용
Mathf-PerlinNoise - Unity 스크립팅 API (unity3d.com)
UStaticMeshComponent | Unreal Engine Documentation
CS_Sword 생성 (카메라 흔들림 구현)
- Oscillation Duration: 0.25초 동안 진동(흔들림)하겠다.
- Oscillation Blend in Time: 기준시간에서 현재시간까지 오는 시간. 카메라 흔들리지 않는 상태에서 카메라가 흔들리는 상태까지 오는데 0초.
- Oscillation Blend Out Time: 흔들림에서 원래데로 돌아가는데 걸리는 시간.
- Rot(ational) Oscillation: 회전 진동.
- Loc(ational) Oscillation: 카메라 앞뒤상하좌우 진동(흔들림).
- 여기서는 Camera Shaking 효과로 상하 흔들림과 좌우 흔들림을 구현한다. 앞뒤 축 흔들림은 잘 사용하지 않는다.
- FOV Oscillation: 수직 시야각. 확대축소.
BP_Enemy 수정 - Play Camera Shake 생성
Apply Damage
Apply Damage > Play Camera Shake 생성
실행화면
Hit Stop
Hit Stop과 Camera Shaking
ㅁ Delay ㅁ 멈췄다가 넘어감
- Delay가 다 회복된 다음에 카메라 흔들림이 끝에 나온다.
- 이러면 타격 순간에는 카메라가 흔들리지 않는다.
- ->하지만 우리는 타격 순간에도 카메라가 흔들려서 좀 더 리얼한 타격감을 구현하고 싶다. 어떻게 할까?
ㅁ Timer ㅁ 멈추지 않음. Timer시점부터 시간 기록.
BP_Enemy 수정 - Play hit Stop 생성
Apply Damage
Apply Damage > Play Hit Stop 생성
세부항목 Zoom in
실행화면
- 세 번째 공격 때 Hit Stop이 실행된다.
Fist 주먹으로 때리기 구현
BS_Fist 생성
BS_Sword를 복사하여 BS_Fist 생성 (Animation - BlendSpace)
- 에셋 브라우저에 있는 Fist_ 애니메이션을 맞는 위치에 넣어준다.
ABP_Player 수정
AnimGraph
AnimGraph > Fist
AnimGraph > Fist > BlendSpace
Weapon Component 수정
Set Fist Mode
- Set Sword Mode를 복사하여 Set Fist Mode를 생성한다.
- Set Mode 노드에서 In New Type을 Fist로 바꿔준다.
Project Setting - 입력
BP_Player 수정
Action
Fist_Attack_1~3_Montage 생성
Fist_Attack_1_Montage 생성
Fist_Attack_2_Montage 생성
Fist_Attack_3_Montage 생성
DT_DoAction_Fist / DT_Equip_Fist / DT_HitData_Fist .csv
DT_DoAction_Fist.csv
DT_Equip_Fist
DT_HitData Fist.csv
Combo_Fist 수정
- Data Tables를 DT_XXXX_Fist 시리즈로 교체해준다.
실행화면