[UE] 마우스휠 Zoom In & Out, IK, FK
목차
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
- Clavicle_L : LT * PT
- Hip: LT * PT = Local Transform * Parent Transform
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방향 확인
- Foot_L: Local 좌표계 기준 왼발의 x방향은 위쪽
- Pelvis: Local 좌표계 기준 골반의 x방향은 위쪽
- 하.지.만. Pelvis는 최상위 부모이기 때문에 World 좌표계를 사용해야 한다.
- Pelvis: World 좌표계 기준 골반의 z방향이 위쪽
- 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
실행화면