⭐ Unreal Engine/UE RPG Blueprint

[UE] Draw a Bowstring, Parkour

Designerd 2023. 2. 13. 09:17

 

 

프리러닝으로도 알려진 파쿠르(Parkour)는 점프, 등반, 달리기를 통해 도시 환경을 통과하는 신체 활동이다. 언리얼 엔진은 비디오 게임에서 파쿠르 게임플레이를 만드는 데 필요한 도구와 기능을 제공한다. 파쿠르 동작은 애니메이션 시스템과 물리 엔진을 사용하여 구현할 수 있다.

 

목차

     


     

     

     

    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    

     

     

     

     

     

     

    Draw a Bowstring 

     

     


     

    Skel_Mannequin 소켓 추가

     

    • Hand_R - 우클릭 - 소켓 추가 - Hand_Bow_Right 생성
    • 위치 조정: x -13.3, y 6.3, z 0.0

     


     

     

    AN_End_BowString 생성

     

    AN_Begin_Action을 복사하여 AN_End_BowString 생성

     

    Get Notify Name

     

     

    Received_Notify

    • Get Component by Class로 Weapon Component를 가지고 온다.
    • AN_End_BowString의 경우 가져온 Weapon이 Bow인지 확인해야 한다.
      • Weapon을 Weapon_Bow로 형변환하여 Weapon이 Bow인 경우만 통과하도록 만든다.  
    • AN_Begin_Actor 시점에 발사가 시작되어 BowString(활 시위)을 손에서 놓는다.  
    • AN_End_BowString은 활 쏘기가 끝났음을 의미한다. 손에 BowString(활 시위)를 다시 붙여준다.  
        • Attach Bow String 체크(True)하여 손에 BowString(활 시위)를 다시 붙여준다.

     


     

     

    AR_ShootAndDraw_Montage - 노티파이 추가

     

    • 우클릭- 노티파이 추가 - 끝쪽 프레임에 End_BowString 노티파이 추가 
    • Weapon_Bow에서 생성한 변수 AttachBowString
      • Begin_Action일 때 false
      • End_BowString일 때 true

     

     

    Weapon_Bow  수정  -  활 시위 당기기 구현

     

    Equip

    • End_Equip
    • Unequip

    Actions

    • Do Action
    • Begin_DoAction
    • End_DoAction

    Sub Action

    • CreateArrow
    • OnArrowDestroyed

     

     

     

    Event Graph

    • Skeletal Mesh: Bone의 위치를 가져올 수 있음. Bone의 셋팅X
    • Poseable Mesh: Bone의 위치를 가져올 수 있음. Bone의 셋팅O(Poseable Mesh만 가능)
    • 변수 생성: StringName (Name), OriginLocation (Vector), AttachBowString (Boolean)
      • AttachBowString: default값을 true로 설정. 손에 Bowstring이 붙은 상태가 default. 
        • AN_BeginAction일 때 false. 활이 나갈 때 손에서 Bowstring이 떨어진다.
        • AN_End_BowString일 때 true. 활 쏘기가 끝났을 때부터 다시 손에 Bowstring을 붙인다.

     

    Bone을 다룰 수 있는 4가지 공간

    공간    
    1. Local Bone 변경 불가.  
    2. Mesh Option에 의해서만 변경 가능   
    3. Component Programming에 의해 수정이 가능 = Mesh안의 Component안에서의 상대  
    4. World    

     

     

     

    Unequip

    확대

     

     

    Begin Do Action - Bowstring(활줄)이 떼어지는 시점

    확대

    • Begin Do Action에서 Bowstring(활줄)이 떼어진다.
    • 따라서 Attach Bow String을 false로 변경한다.

     


     

    실행화면

     

     

     


     

     

     

     

    Parkour

     


     

    State Component

     

    Set Parkour Mode 생성

     


     

     

    Parkour Component

     

    Gets

    • Get Arrow Component
    • Get Hit Result Arrow Type 
    • Get Data

    Common

    • Line Trace
    • Play Parkour Montage

    Trace

    • Check Trace_Center      

    Parkour

    • Do Parkour                       파쿠르 수행
    • Check Do Parkour           파쿠르를 수행할 수 있는지 확인

    Climb

    • Check_ClimbMode           기어 올라갈 수 있는지 체크
    • Do Parkour_ClimbMode   기어 올라가는 움직임 수행

     

     

     

    Get Data

    • 로컬변수 생성: TempDatas (FParkour Data 배열)

     

     

    Check Climb Mode   기어 올라갈 수 있는지 체크

    • Check Climb Mode 함수는 플레이어가 해당 장애물을 넘어(=climb)갈 수 있는지 체크한다.
    • 첫째로, 머리 위에 닿는게 있는지 확인한다
    • 둘째로, 해당 장애물이 올라갈 수 있는 높이인지 체크한다. 

     

     

    Do Parkour Climb Mode  기어 올라가는 움직임 수행

     

     


     

    이론 설명

     

    Root Motion이 없는 애니메이션은 사용하면 안 된다.

    Root Motion X Root Motion O
    충돌체는 가만히 있고 움직임
    (Enable Root Motion 켜도 똑같)
    충돌이 일어나지 않고 물체를 통과함  
    충돌체가 같이 움직
    충돌 발생. 

     

    Root Motion X

     

    Root Motion O

     

    참고

     


     

     

     

    Run_Climb_Montage 생성

     

    Run_Climb 애니메이션 우클릭 - 몽타주 생성 - Run_Climb_Montage 생성

    • FullBody로 변경

     


     

     

     

    Parkour Data

     

    • 리임포트 - Run_Climb_Montage 적용

     


     

    실행화면

     

     

    장애물을 오른 후에도 캐릭터가 계속해서 올라간다. 이에 대한 해결책은?