Designerd 2023. 1. 11. 09:28

목차

     

     


     

     

    무기 관리

    BP: Blueprint Class

    BS: Blend Space

    ABP: Animation Blueprint

    AN: Blueprint Class AnimNotify

    ANS: Blueprint Class - AnimNotifyState

    E: Enum 열거형

    DT: Data Table

    UE2212_01

    01_Blueprints Level - LEVEL
    BP_01_Variable
     
    02_Player 02_Player - LEVEL
    ABP_Player

    BP_Player
     
    03_Vector 03_Vector - LEVEL
    03_Vector_Trace - LEVEL
    BP_03_01_Location
    BP_03_02_Direction
    BP_03_03_Trace
     
    04_Sword BP_Sword  
    05_Collision 05_Collision - LEVEL
    BP_05_01_ActorOverlap
    BP_05_02_ComponentOverlap
    BP_05_03_OverlapAndHit
     
    06_Enemy ABP_Enemy
    BP_Enemy
     
    Character Animation Common
    OneHand
    Unarmed
    BlendSpaces BS_Sword        
    BS_Unarmed
    Materials

    MaterialLayers
    M_UE4Man_Body
    M_UE4Man_ChestLogo
    Mesh SK_Mannequin
    SK_MAnnequin_PhysicsAsset
    Skel_Mannequin
    Mixamo Alpha_Body_MAT
    Alpha_Joints_MAT
    Standing_Taunt_Battlecry
    Y_Bot
    Y_Bot_PhysicsAsset
    Y_Bot_Skeleton
    Montages Enemy_DeadFall_Montage
    HitReaction_Montage
    Sword_Attack_1_Montage
    Sword_Attack_2_Montage
    Sword_Attack_3_Montage
    Textures UE4_LOGO_CARD
    UE4_Mannequin__normals
    UE4_Mannequin_MAT_MASKA
    UE4Man_Logo_N
    Weapons Sword
    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 AN_Begin_Equip
    AN_Begin_Unequip
    AN_Begin_Action
    AN_End_Equip
    AN_End_Unequip
    AN_End_Action
    AN_End_Dead
    ANS_Combo
    ANS_Collision
     

     

    UE2212_02

      Level - LEVEL
    ABP_Player
    BP_GameMode
     
    Character Animation Common
    OneHand
    Unarmed
    BlendSpaces BS_Sword        
    BS_Unarmed
    Materials

    MaterialLayers
    M_UE4Man_Body
    M_UE4Man_ChestLogo
    Mesh SK_Mannequin
    SK_MAnnequin_PhysicsAsset
    Skel_Mannequin

    Montages
    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
       
    Environment
    Materials Textures  
    Meshes    
    Obstacle    
    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    
    Player BP_Player    
    Weapons
    Sword Combo_Sword - Blueprint Class Actor Weapon_Combo 상속
    DT_Equip_Sword
     
    EWeaponType
    Weapon
    - Blueprint Class Actor
    Weapon_Combo - Blueprint Class Actor Weapon 상속
       

     

     

     

    언리얼은 리플렉션이 가능하다

    • Enum의 문자를 숫자가 아닌 문자로 인식.
    • 구조체+데이터테이블 방식. 아래의 FEquipData + DT_Equip_Sword 방식.

     

     


     

    FEquipData 생성

     

    Blueprint Class - 구조체 - FEquipData 생성

     

    • 변수 생성
    • Montage(Anim Montage), PlayRate(Float), UseControlRotation(Boolean), CanMove(Boolean)

     

     


     

    DT_Equip_Sword 생성

     

    액셀을 활용하여 데이터를 입력한 후 .csv파일로 저장한다. 그 후 언리얼에서 .csv파일을 불러와서 데이터로 활용한다.

     

    Exel - DT_Equip_Sword.csv 파일 생성

     

     

    언리얼에서 DT_Equip_Sword.csv 파일 불러오기

     


     

    Combo_Sword

     

    • 컴포넌트 추가 - SkeletalMesh 생성
    • 메시 - Skeletal Mesh - SK_Sword로 설정

     

    • Data Tables - Equip Data Table -  DT_Equip_Sword 로 설정

     


     

     

    ANS_Equip 생성

     

    Get Notify Name

     

    Received NotifyBegin

     

    Received NotifyEnd

     


     

     

    Draw_Sword_Montage 생성

     

    • Animation - Sword - "Draw_Sword_1" + "Draw_Sword_2"를 조합하여 애님몽타주 생성 - Draw_Sword_Montage 
    • UpperBody로 변경
    • 노티파이 - 노티파이 스테이트 추가 - ANS Equip 15~37프레임 설정

     

     


     

    Weapon Component

     

     

    Event Graph

    • Get Weapon - 우클릭 - 검증된 Get으로 변환

     

    ChangeType

     

    SetMode

    • In New Type == Type 장착하려는 무기가 장착된 무기가 같은지 확인. Branch
      • True: 장착하려는 무기 = 장착된 무기인 경우 Set Unarmed Mode로 무기해제
      • False: 장착하려는 무기 != 장착된 무기인 경우 Branch로 '무기가 장착되었는지' '무기가 장착되어있지 않은지' 확인
    • Is Unarmed Mode를 Branch로 검사하여
      • True: 무기장착x, Set Weapon으로 무기 장착
      • False: 무기장착o, Unequip으로 무기장착을 해제해준 후에 Set Weapon으로 무기 장착

     

     

    SetUnarmedMode


     

    Weapon

     

     

    Event Graph

    Set Owner

    Set Component

    Load Equip Data

     

     

    Equip

     

    Begin Equip

     

    End Equip

     

    UnEquip

     

     


     

    MovingComponent

     

     

    IsCanMove

     

    Move

     

    Stop

     

    Enable Control Rotation

     

    Disable Control Rotation

     

     


     

    StateComponent

     

     

    Is Idle Mode

     

     

     

     

     

     

     

     

     


     

     

    실행화면