[UE] Parkour - Climb, Land, Slide
언리얼 엔진은 비디오 게임에서 파쿠르 게임플레이를 만드는 데 필요한 도구와 기능을 제공한다. 파쿠르 동작은 애니메이션 시스템과 물리 엔진을 사용하여 구현할 수 있다언리얼 엔진은 비디오 게임에서 파쿠르 게임플레이를 만드는 강력한 프레임워크를 제공하여 개발자들이 플레이어의 기술과 반사신경을 테스트하는 몰입적이고 도전적인 환경을 만들 수 있게 한다.
목차
Parkour - Climb
지난 시간에 파쿠르 장애물 넘기를 구현하였다. 하지만 캐릭터가 장애물을 오른 후에도 계속해서 위로 올라갔다.
이번 시간에는
1. 장애물을 오른 후에 캐릭터의 상태(EParkour Type)를 돌려주고,
2.
AN_EndParkour 생성
AN_BeginAction을 복사하여 AN_EndParkour 생성
Get Notify Name
Received_Notify
Parkour 몽타주들에 AN_EndParkour 키값 주기
Falling_Roll_Montage
Run_Climb_Montage
SingleSlider_Montage
Parkour Data 리임포트
Parkour Component
Gets
- Get Arrow Component
- Get Hit Result Arrow Type
- Get Data
Common
- Line Trace
- Play Parkour Montage
Trace
- CheckTrace_Center
- CheckTrace_Land
Parkour
- DoParkour 파쿠르 수행
- Check_DoParkour 파쿠르를 수행할 수 있는지 확인
- End_DoParkour 파쿠르 끝냄
Climb
- Check_ClimbMode 기어 올라갈 수 있는지 체크
- Do Parkour_ClimbMode 기어 올라가는 움직임 수행
End Do Parkour
- End Do Parkour 함수는 파쿠르를 끝낼 때 불러주는 함수.
- 0: Current Type(=파쿠르 타입) 스위치문으로 Climb이 끝날 때의 경우 Character Movement를 Walking으로 변경함.
- 1: 파쿠르가 종료될 때 공통적으로 적용되는 노드들
Do Parkour Climb Mode
- Character를 장애물의 Yaw방향으로 돌리고 Hit Point의 위치로 붙이고 그 상태로 올라간다.
- 약간 틀어져있어도 보정해서 정면을 바라보고 올라간다.
실행화면
Parkour - Land
Parkour Component
Gets
- Get Arrow Component
- Get Hit Result Arrow Type
- Get Data
Common
- Line Trace
- Play Parkour Montage
Trace
- CheckTrace_Center
- CheckTrace_Land
Parkour
- DoParkour 파쿠르 수행
- Check_DoParkour 파쿠르를 수행할 수 있는지 확인
- End_DoParkour 파쿠르 끝냄
Climb
- Check_ClimbMode 기어 올라갈 수 있는지 체크
- Do Parkour_ClimbMode 기어 올라가는 움직임 수행
Land
- Check_FallMode 추락중인지 체크
- DoParkour_LandMode 랜드모드로 변환(땅에 닿았을때 호출)
Event Graph
- Hit Obstacle(Actor)이 유효하지 않을때 Check Trace Land 노드 추가
최초 추락이 시작될 때 높이를 기록한다.
CheckTrace_Land
확대
- 변수 추가: Falling (Boolean), Start (Vector)
- 추락중에 Start높이를 계속 기록하면 높이가 계속 바뀌기 때문에 최초 추락 한 번만 기록한다.
- Falling이 False라면 True로 만든다.
- 지역변수 추가: Arrow (Arrow Component), Color (Linear Color), Start (Vector)
- Start (Vector) = 추적을 시작할 위치
- LineTraceByChannel의 Trace Channel는 모든 지면에 다 닿아야 하므로 Visibility
Check_FallMode
- Check_FallMode 함수는 추락중인지를 체크하는 함수이다.
- 'Land에 Hitting된 거리 > Min Distance'라면 return 해준다.
DoParkour_LandMode
- DoParkour_LandMode 함수는 땅에 닿았을때 호출
BP_Player 수정
Event Graph
ABP_Player 수정
Event Graph
확대
- 변수생성: Falling (Boolean)
- Character가 is Falling일 때 생성한 변수 Falling을 True로 설정.
AnimGrpah
확대
- Falling인 상태에서는 Unarmed_JumpLoop 애니메이션을 재생한다.
실행화면
Parkour - Slide
Character 앞쪽에 가상의 Box Trace를 만들어 충돌을 확인한다. 충돌 후에 slide가 가능한지 확인하고 slide를 수행한다. 이 과정은 Parkour Component 안의 Check Slide Mode 함수에서 수행한다.
Parkour Component
Gets
- Get Arrow Component
- Get Hit Result Arrow Type
- Get Data
Common
- Line Trace
- Play Parkour Montage
Trace
- CheckTrace_Center
- CheckTrace_Land
Parkour
- DoParkour 파쿠르 수행
- Check_DoParkour 파쿠르를 수행할 수 있는지 확인
- End_DoParkour 파쿠르 끝냄
Climb
- Check_ClimbMode 기어 올라갈 수 있는지 체크
- Do Parkour_ClimbMode 기어 올라가는 움직임 수행
Land
- Check_FallMode 추락중인지 체크
- DoParkour_LandMode 랜드모드로 변환(땅에 닿았을때 호출)
Slide
- Check_SlideMode 슬라이드 가능한지 체크
- DoParkour_SlideMode 슬라이드 수행
Do Parkour
- DoParkour_SlideMode 추가
End_DoParkour
- Parkour_SlideMode가 끝났을 때 Set Actor Enable Collision으로 Collsion을 다시 켜준다.
- 이 때 DoParkour_SlideMode 함수에서 Hit Obstacle를 저장해주었던 변수 Hit Obstacle Backup을 타깃으로 설정한다.
Check Slide Mode
확대
- 로컬변수 생성: Floor Extent (Float), Color (Linear Color)
DoParkour_SlideMode
- Set Actor Enable Collision으로 Collsion을 다 꺼준다.
- BP_Player의 Collsion Capsule이 충돌하면 slide를 진행할 수 없다. 따라서 slide 중에는 collsion을 꺼주는 것이다. slide가 끝나는 즉시 End_DoParkour 함수에서 collsion이 다시 켜진다.
실행화면
ABP: Animation Blueprint
AN: Blueprint Class AnimNotify
ANS: Blueprint Class - AnimNotifyState
AO: Aim Offset
BP: Blueprint Class
BS: Blend Space
BF: Blueprint Function Library
CS: Matinee Camera Shake
E: Enum 열거형
DT: Data Table
F: 구조체
I: Blueprint Interface
WB: Widget Bluepprint
UE2212_02
Level - LEVEL ABP_Player BP_GameMode BF_Helper IDamage |
|||
AdvancedMagicFX12 |
Materials | ||
Meshes | |||
Particles | |||
Textures | |||
Character | Animation | Bow | |
Common | |||
Fist | |||
Hammer | |||
Parkour | |||
Sword | |||
Unarmed | |||
Wizard | |||
BlendSpaces | BS_Bow BS_Fist BS_Hammer BS_Sword BS_Unarmed BS_Wizard |
||
Materials |
MaterialLayers |
||
M_UE4Man_Body M_UE4Man_ChestLogo |
|||
Mesh | SK_Mannequin SK_MAnnequin_PhysicsAsset Skel_Mannequin |
||
Montages |
Around | Around_Montage | |
Bow | AR_DrawBow_Montage AR_ShootAndDraw_Montage |
||
Common | HitReaction_Move_Montage HitReaction_Stop_Montage |
||
Fist | Fist_Attack_1_Montage Fist_Attack_2_Montage Fist_Attack_3_Montage Fist_Hitted_Montage |
||
Hammer | Frank_RPG_2Hand_Combo01_1_Montage Frank_RPG_2Hand_Combo01_2_Montage Frank_RPG_2Hand_Combo01_3_Montage Frank_RPG_2Hand_Combo01_4_Montage |
||
Parkour | Run_Climb_Montage | ||
Sword | Draw_Sword_Montage Sword_Attack_1_Montage Sword_Attack_2_Montage Sword_Attack_3_Montage |
||
Warp | Warp_Montage | ||
Enemy_DeadFall_Montage HitReaction_Montage |
|||
Textures | UE4_LOGO_CARD UE4_Mannequin__normals UE4_Mannequin_MAT_MASKA UE4Man_Logo_N |
||
Weapons | Elven Bow | ||
Greate Hammer | |||
Sword |
|||
Component | EStateType MovingComponent StateComponent WeaponComponent FeetComponent TargetComponent |
||
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 AN_CameraShake |
||
Parkour | EParkourArrowType EParkourType FParkourData ParkourComponent ParkourData |
||
Player | BP_Player FZoomData |
||
Sounds | S_BGM S_HitPunch S_OneHand_Hit |
||
Textures | Crosshair | ||
Weapons |
Around | Around_FireBall Around_FireBall1 Around_IceBall Around_IceBall1 DT_DoAction_Around DT_Equip_Around DT_HitData_Around Skill_Around Weapon_Around |
|
Bow | AO_Aim Curve_Aim DT_DoAction_Bow DT_Equip_Bow DT_HitData_Bow FAimData Skill_Aim Skill_Arrow Weapon_Bow |
||
FireBall | DT_DoAction_FireBall DT_Equip_FireBall DT_HitData_FireBall Skill_FireBall Weapon_FireBall |
||
Fist | Combo_Fist - Blueprint Class Actor Weapon_Combo 상속 CS_Fist DT_DoAction_Fist DT_Equip_Fist DT_HitData_Fist |
||
Hammer | Combo_Fist - Blueprint Class Actor Weapon_Combo 상속 CS_Hammer DT_DoAction_Hammer DT_Equip_Hammer DT_HitData_Hammer |
||
Sword | Combo_Sword - Blueprint Class Actor Weapon_Combo 상속 CS_Sword DT_DoAction_Sword DT_Equip_Sword DT_HitData_Sword |
||
Warp | Weapon_Warp - Blueprint Class Actor Weapon 상속 DT_DoAction_Warp DT_Equip_Warp |
||
EWeaponType FDoActionData FEquipData FHitData Weapon - Blueprint Class Actor Weapon_Combo - Blueprint Class Actor Weapon 상속 M_Weapon Skill |
|||
Widget | WB_CrossHair |
전투
- 타격, 방어, 방어해제, 반격
공격
- 다운공격(엎어진 적 때리기)
- 공중콤보(처올려서 치기, 처올린 후 공중으로 뛰어서 콤보)
AI