⭐ Unreal Engine/UE RPG Blueprint

[UE] Behavior Tree 2

Designerd 2023. 2. 21. 09:09

 

행동 트리를 만든 후에는 게임이나 시뮬레이션에서 NPC 또는 AI가 제어하는 엔티티에 연결할 수 있다. 그런 다음 동작 트리는 트리 구조에 정의된 논리에 기초하여 엔티티의 동작을 결정한다.



 

목차

     

     


     

     

    Behavior Tree - Melee

     

    0. BP_Enemy
    - StateComponent
    BP_AIController_Melee 0. BB_AI
    0. BT_Melee
    1. BP_Enemy_AI
    - WeaponComponent
    - MovingComponent
    - BehaviorTree (Behavior Tree)
      1. BTService_Melee
    2. BP_Enemy_AI_Melee   2. BTTask_Speed
    2. BTTask_Patrol

     


     

    2. BP_Enemy_AI_Melee

     

     

    • Default - Behavior Tree - BT_Melee로 변경

     

    E Behavior Type 생성

     

    블루프린트 - 열거형 - EBehaviorType 생성

    • Wait, Approach, Action, Patrol, Hitted, Avoid 추가

     

    E Speed Type 생성

     

    블루프린트 - 열거형 - ESpeedType 생성

    • Walk, Run, Sprint 추가

     

    Moving Component - Set Speed 함수 추가

     

    • Set Speed 함수 추가
      • 입력 추가: InType (ESpeedType)
    • 변수 생성: Speed (float 배열)
      • 0: 200.0 설정
      • 1: 400.0 설정
      • 2: 600.0 설정

     

     

    0. BB_AI

     

    Blackboard

    • 새 키:
      • SelfActor (Object): Actor
      • Target (Object): BP_Player
      • Behavior (Enum): EBehavior Type

     

     

    0. BT_Melee

     

    • Notify Observer
      • On Result Change:
        • 결과 바뀜 - 가져온 컨디션 결과가 바뀌었을 때만 재시작 한다.
        • =실행하면서 성공이나 실패가 바뀌없을 때 재시작 한다.
        • =Reevaluate only when the condition has changed.
      • On Value Change:
        • 값 바뀜 - 관찰되는 블랙보드값이 바뀔 때마다 재시작한다.
        • =지정한 변수값이 바뀔 때 재시작 한다. 잘 사용하지 않음.
        • =Reevaluate only when the observed Blackboard Key changes.

    https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/ArtificialIntelligence/BehaviorTrees/BehaviorTreeNodeReference/BehaviorTreeNodeReferenceDecorators/

     

     

     

     


     

    1. BTService_Melee

     

    Tick AI

    • Tick AI 함수 생성
      • 입력 생성: InController (BP_AIController_Melee), InCharacter (BP_Enemy_AI)
    • 변수 생성: 
      • TargetKey (Blackboard Key Selector)
      • BehaviorKey (Blackboard Key)
      • ActionDistance (Float): 150.0 설정. 여기서는 행동이 일어나게 하는 범위로 사용하는 변수로 사용. 150.0 범위 내로 들어가면 Branch가 True가 되어 EBehaviorType이 Action이 된다.   
    • 로컬변수 생성: Target (BP_Player)

     

     

    Event Graph

    • 함수 오버라이드 - Receive Tick AI 이벤트 생성
    • 위에서 만든 Tick AI 함수 호출하여 실행. 

     

    2. BTTask_Speed

     

    Event Graph

    • 함수 오버라이드 - Receive Execute AI 이벤트 생성
    • 변수 생성: SpeedType (ESpeedType) 
    • Moving Component에서 Set Speed를 호출해온다(조금 전에 Moving Component내에 Set Speed함수를 만들어 주었다).

     


     

     

    2. BTTask_Patrol

     

    Event Graph

    • 함수 오버라이드 - Receive Execute AI 이벤트, Received Tick AI 이벤트 생성
    • 변수 생성: 
      • RandomDistance (Float): 1500.0으로 설정.
      • Location (Vector)
      • AcceptanceRadius (Float): 20.0으로 설정.
      • DrawDebug (Boolean)

     


     

     

    실행화면

     

     

     


     

     

     

     

     

    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 Basic BP_AIController_Basic
    BP_Enemy_AI_Basic
    BT_Basic
    BT_Move
     
    Melee BP_AIController_Melee
    BP_Enemy_AI_Melee
    BT_Melee
    BTService_Melee
     
    Tasks BTTask_Patrol
    BTTask_Speed
     
    BB_AI
    BP_Enemy
    BP_Enemy_AI
       
    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
    AN_End_BowString
    AN_EndParkour
       
    Parkour EParkourArrowType
    EParkourType
    FParkourData
    ParkourComponent
    ParkourData
       
    Player BP_Player
    FZoomData
       
    Sounds S_BGM
    S_HitPunch
    S_OneHand_Hit
       
    Textures Crosshair
    T_Around
    T_Black
    T_Bow
    T_Fireball
    T_Fist
    T_Hammer
    T_Sword
    T_Warp
       

     
    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
    WB_Menu
    WB_MenuButton
    WB_Name