⭐ Unreal Engine/UE RPG Blueprint

[UE] 주먹 충돌구현, 플레이어+적 방향 맞추기 Fist Collsion, Player Camera + Enemy

Designerd 2023. 1. 20. 09:27

 

목차

     

     


     

    주먹 충돌

     

    BP: Blueprint Class
    BS: Blend Space

    BF: Blueprint Function Library
    ABP: Animation Blueprint
    AN: Blueprint Class AnimNotify
    ANS: Blueprint Class - AnimNotifyState
    E: Enum 열거형
    DT: Data Table
    F: 구조체

    I: Blueprint Interface

     

    UE2212_02

      Level - LEVEL
    ABP_Player
    BP_GameMode
    BF_Helper
    IDamage
     
    AdvancedMagicFX12
    Materials  
    Meshes  
    Particles  
    Textures  
    Character Animation Common
    Sword
    Unarmed
    BlendSpaces BS_Fist
    BS_Sword

    BS_Unarmed
    Materials

    MaterialLayers
    M_UE4Man_Body
    M_UE4Man_ChestLogo
    Mesh SK_Mannequin
    SK_MAnnequin_PhysicsAsset
    Skel_Mannequin

    Montages
    Common HitReaction_Move_Montage
    HitReaction_Stop_Montage
    Fist Fist_Attack_1_Montage
    Fist_Attack_2_Montage
    Fist_Attack_3_Montage
    Fist_Hitted_Montage
    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
       
    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
       
    Player BP_Player    
    Sounds S_BGM
    S_HitPunch
    S_OneHand_Hit
       
      Fist Combo_Fist - Blueprint Class Actor Weapon_Combo 상속
    CS_Fist
    DT_DoAction_Fist

    DT_Equip_Fist
    DT_HitData_Fist
     
    Weapons
    Sword Combo_Sword - Blueprint Class Actor Weapon_Combo 상속
    CS_Sword
    DT_DoAction_Sword
    DT_Equip_Sword
    DT_HitData_Sword
     
    EWeaponType
    FDoActionData
    FEquipData
    FHitData
    Weapon - Blueprint Class Actor
    Weapon_Combo - Blueprint Class Actor Weapon 상속
    M_Weapon
       

     

     


     

    언리얼에서 문자열을 다루는 방법

     

    언리얼에서 문자열을 다루는 방법

    • FString:  L " " - MBCS
    • FName:  TEXT("  ")
    • FText: Unicode를 지원해준다. LOC-TEXT. 각 국가마다 언어에 맞게 문자열을 출력해주는 방식. LOC-TEXT(" ")

     

     

     


     

    Player와 Enemy 방향 맞추기

     

    Combo 구현 중 계속해서 적을 공격할 수 있도록 Player와 Enemy 방향 맞추기

    • Enemy을 Player쪽으로 가져다놓는 방식
    • Player가 Enemy을 바라보는 방식
      • Player Camera 기준에서 내적으로 가장 가까운 정면의 Enemy을 찾아주는 방식. 단, 너무 멀리 떨어진 Enemy는 인식시키지 않게 하기 위해 제한각을 넣어줘야 한다.
      • A ⊙ B = |A||B|cosθ = normalize해서 1 x 1 x cosθ  = cosθ  
      • 가장 멀수록 -1 또는 1
      • Player CameraEnemy를 내적해서 1에 가장 가까운 적을 찾아준다.

     

     

    벡터의 내적

    https://designerd.tistory.com/entry/DirectX12-Vector

     

    [게임수학] Vector (기하)벡터

    Vector 벡터 크기와 방향 모두 가지고 있다. 벡터 사이의 '덧셈과 뺄셈'은 가능하나 '곱셈과 나눗셈'(내적, 외적, 직접곱은 엄밀히 말하면 곱셈이 아니다)은 불가능하다. 벡터와 스칼라의 곱셈 나눗

    designerd.tistory.com

     

     


     

    Combo_Fist 수정

     

    Viewport

    • 컴포넌트 추가 - Sphere Collision 추가 - Fist_LeftHand, Fist_RightHand, Fist_LeftFoot, Fist_RightFoot 생성

     

    Event Graph

     

     


     

    Skel_Mannequin 수정

     

     

    • Animation - Mesh - Skel_Mannequin 파일 수정.
    • 해당 위치에 우클릭 소켓 추가로 아래 4개를 생성.
    • Fist_LeftHand, Fist_RightHand, Fist_LeftFoot, Fist_RightFoot 생성

     


     

    Weapon_Combo 수정

     

    On Begin Overlap

    • On Begin Overlap 함수는 데미지를 주는 부분.
    • Hitted 배열 변수 추가한다. 데미지를 받을 수 있는건 Character들이기 때문에 변수유형은 Character 배열이다.

     

    Off Collision

     

     

     


     

     

     

    Moving Component 수정

     

    Get Fixed Camera 추가

     

    Enable Fixed Camera 추가

     

    Diable Fixed Camera 추가

     

     


     

     

    BP_Player 수정

     

    View

    • Spring Arm - Camera Collision - Do Collision Test 체크 해제

     


     

     

    Player + Enemy 방향 맞추기, Camera Shaking

     

     

     

    Fist_Attack_3_Montage 수정

     

    • Anim State - Camera Shaking 추가
    • Anim Notify - Shake Class - CS_Fist 로 변경

     

     

     

    AN_CameraShake 생성

     

    Received Notify

     

    Get Notify Name

     

     

     

     

     

     

     

     

     


     

    M_Weapon 수정

     

    Play Action Montage

     

     


     

     

    Weapon 수정

     

    End Do Action 수정

     

     


     

     

    BF_Helpers 생성

     

    Blueprint - Blueprint Function Library - BF_Helpers 생성

     

     

     

     


     

     

    실행화면