⭐ Unreal Engine/UE RPG Blueprint

[UE] 마우스휠 Zoom In & Out, IK, FK

Designerd 2023. 2. 3. 09:06

 

 

목차

     

     


     

     

    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
    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
       
    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
       
    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    

     

     

     

     

     

    플레이어 실행화면 마우스휠 Zoom In & Out 만들기

     

     

     

     


    Project Setting - 입력 매핑 추가

     

    Project Setting - 입력 - 축 매핑 - Zoom 추가

    • Project Settings - 입력 - 축 매핑 추가
    • Zoom 마우스 휠 축, Scale -1.0

     


     

    FZoomData 생성

     

    Blueprint - 구조체 - FZoomData 생성

    • Speed  20.0
    • Min Range  100.0
    • Max Range  600.0
    • Interp Speed 5.0

     


     

    Weapon Component 수정

     

    Is Bow Mode 추가

    • IsUnarmedMode를 복사하여 IsBowMode 생성. 

     


     

    BP_Player

     

    IsNotBowMode

    • BowMode에서 카메라 Zoom In & Out을 사용하기 때문에 마우스 휠 Zoom In&Out과 구분해서 사용하는게 좋다. 그래서 BowMode가 아닐 때 마우스휠 Zoom In&Out가 적용되게 한다.
    • isNotBowMode 함수 생성
    • 반환노드 출력에 bool형 Return Value 생성
    • 방금 Weapon Component에서 만든 IsBowMode를 불러주고 NOT 상태일 때 반환(=Return) 

     

     

    Event Graph

    • 속도가 있기 때문에 Delta Time이 들어간다. Tick Event

     


     

    참고) Lerp (Linear Interpolation) 선형보간

     

    선형보간

    (1-t)*A + t * B

     


     

    실행화면

     


     

     

     

     

     

     

     

     

    IK, FK 구현

     

    Root

    • Pelvis (여기서부터 시작, Local Transform)
      • Hip: LT * PT = Local Transform * Parent Transform
        • Clavicle_L : LT * PT
          • Foot_L
          • Foot_R

     

     

    FK: 위에서 아래로 내려오는 방식

    IK: 아래에서 위로 올라오는 방식 

     

    어느시점에서 FK IK 합쳐진다.

     

    Local FK: Animation 수정불가

    Mesh FK 언리얼 자체에서 옵션으로 수정가능. 프로그래밍으로 불가능

    Component FK+IK 프로그래밍으로 수정 가능 

     


     

    FFeetData 생성

     

    Blueprint - 구조체 - FFeetData 생성

    • Left Distance (Vector)
    • Right Distance (Vector)
    • Pelvis Distance (Vector)
    • Left Rotation (Rotator)
    • Right Rotation (Rotator)

     


     

    FFeetComponent 생성

     

    Blueprint Class - Actor Component - FFeetComponent 생성

     

     

    Trace

    Zoom In

    • Trace 함수 생성
    • Trace 입력에 InSocketName (이름), 출력에 OutDistance (float) 생성 
    • Offset Distance: 캐릭터는 실제게임에서 살짝 떠있다. 이 살짝 떠있는 정도. 여기서는 5.0 값을 주었다.
    • Trace Distance: 계단 위 캐릭터의 떠있는 한쪽발과 바닥 사이의 거리. 

     

     

     

    Apply Inverse Kinematics

     

     

     

    Skel_Mannequin에서 Character의 x, y, z방향 확인

    Local 좌표계

    • Foot_L: Local 좌표계 기준 왼발의 x방향은 위쪽

     

    Local 좌표계
    World 좌표계

    • Pelvis: Local 좌표계 기준 골반의 x방향은 위쪽
    • 하.지.만. Pelvis는 최상위 부모이기 때문에 World 좌표계를 사용해야 한다.
    • Pelvis: World 좌표계 기준 골반의 z방향이 위쪽   

     

    Local 좌표계

    • Foot_R: 왼발의 x방향은 아래쪽
    • Foot_R의 x방향 = -(Foot_L의 x방향)
    • Foot_R의 y방향 = -(Foot_L의 y방향)
    • Foot_R의 z방향 = Foot_L의 z방향
    • 디자이너들은 작업할 때 반쪽을 완성시킨 후 대칭 시켜준다. 그래서 반대편 발의 x방향이 반대방향으로 바뀐다.  

     

     

     

    Event Graph

     


     

     

    ABP_Player

     

    Event Graph

     

     

    Anim Graph

     


     

     

    실행화면