Advanced Locomotion System 3
Base Layer
Grounded State
Anim Assets
Roll 등 땅에서 움직이는 Anim Montage
- Notify 로 끝나는 부분에서 EntryMode 를 바꿔줘야함
Used Value
struct GroundedEntryState { Idle, Roll }
- Grounded States 에서 Montage 가 끝나고 다시 Machine States 가 돌 때 어디로 갈지 판단할 때 쓰임.
설명
Grounded 에서 Montage 가 돌아가는 경우 FootLock 을 실행하고 싶음.
- 이를 위해선 Transition Animation 이 끝부분에 재생되야함.
- 이를 위한 States
Grounded Slot 에서 돌던 Montages 가 끝나면 Grounded State 는 처음부터 다시 평가 받음.
- Montage 는 끝부분에 EntryMode 변수를 Notify 로 바꾸어줌
- EntryMode 를 보고 특정 State 로 이동시킴.
- Montage 의 끝부분을 Evaluate 함과 동시에 FootLock 을 1로 켜주는 State 임
- 곧바로 Locomotion 재생하는 States 으로 이동시킴
- 이때 Transition Animation 을 틀어주는 Montage 를 수행함
- Transition Animation 은 Additional Animation 이므로 중간에 취소시킬 필요는 없음.
MainMovement States
Anim Assets
Landed (Anim Sequence)
- Light Landed 랑 Heavy Landed 의 차이는 소리의 차이가 더 큼
- Additive Version 과 그냥 버전이 있는데 전자는 착지중 달릴 때 쓰임.
Jump (Anim Sequence)
Fall Loop (Anim Sequence)
- 일반버전과 Fast 버전이 있음
Lean Falling
- Fall Loop 의 Additive Animation 으로 당연히 몸 기울리는데 쓰임
Used Values
float FallSpeed
Velocity.Z
값을 사용함- 이 값이 얼마나 큰지에 따라 Fall Loop 를 빠른버전을 쓸지 말지, Landed 를 Heavy 를 할지 정함
float LandPrediction
Velocity
에 따라서 CapsuleTrace 를 시행한 결과를 이용함HitResult.Time
을Mask_LandPrediction
이라는 Anim Curve 상태를 보고 보간해 사용함Lerp(HitResult.Time, 0, Mask_LandPrediction
- 값이 1 이면 Landed 시작 모션을 Falling/Jump State 에서 재생함
struct LeamAmount { float LR, FB;}
- SKMesh 의 Component Space 로
Velocity
를 변환시킴 - 그 값을 300으로 나누고 -1~1 사이의 범위는 LeanAirAmount 라는 Curve 에
FallSpeed
로 값을 가져와 곱함 - 이를 구보전 값과 DeltaTime 으로 보간해서 업데이트함
설명
MovementMode 에 따라서 애니메이션을 실행하는 부분.
중요한 특징이 몇가지 있음.
- Grounded State 에서 Enable_Foot_Lock_L/R 을 켜주는 것.
- Falling 상태에서 몸일 기울이는 것.
LandPrediction
에 따라서 시작모션을 미리 준비하는 것.
댓글남기기