⭐ Unreal Engine/UE RPG Blueprint

[UE] Parkour - Climb, Land, Slide

Designerd 2023. 2. 14. 15:11

 

언리얼 엔진은 비디오 게임에서 파쿠르 게임플레이를 만드는 데 필요한 도구와 기능을 제공한다. 파쿠르 동작은 애니메이션 시스템과 물리 엔진을 사용하여 구현할 수 있다언리얼 엔진은 비디오 게임에서 파쿠르 게임플레이를 만드는 강력한 프레임워크를 제공하여 개발자들이 플레이어의 기술과 반사신경을 테스트하는 몰입적이고 도전적인 환경을 만들 수 있게 한다.

 

목차

     

     


     

     

     

     

     

    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