WL #967 PD 지시 7건 — ① 비수 각성 넉백 끔(WLSkillHitFeel Skill_DarkAmbush 넉백 0 · 밀기 0 · 경직 0.15 s · 실측 각성 판정 2회 넉백 건너뜀 · 판정 사이 밀림 0) ② 비수 4타 = PC 중심 수평 반원 횡베기(SlashTrailSettings arcFlatStages · WeaponTrailDriver 수평 면 · 호 가운데 = 대상 · 실측 반지름 1.25 m · 대상 쪽 8° · 바깥 끝↔대상 0.18 m) ③ 활 주력 모으기 = 0.30→0.50 시위 당기며 유지 · 발사 0.56(WLRapidShot chargeFromNormalized · releaseNormalized · 놓는 클립 BowShot1_S_10402) ④ 활 기본 공격 두 손 = IK 로 머리 밖으로(WLBowPoseIK 신설 · 컨트롤러 IK Pass · 실측 두 손↔머리 0.33/0.38 m) ⑤ 지팡이 3타 = 포즈 0.5 s 연장(attack3 속도 0.25→0.1225 · 실측 머무름 0.90 s) + 투사체 대신 메테오 1발(WLStaffEarth popup.meteor · 전환 중 3타 판정 고침 · 실측 3타 메테오 35 · 바위 솟음 0) ⑥ 각성 메테오 폭발 = 갈색 흙먼지(범인 = 스킬 피격 WL_Hit_StaffSkill · 메테오 전용 갈색 사본 WL_Hit_StaffMeteor · 메테오 사본 폭발 연기 갈색) ⑦ 창 4단 콤보(1 Spearman Attack2_S 횡베기 · 2 Spearman Attack1 내려치기 · 3 찌르기 6연타 · 4 강한 찌르기 · 매핑 재굽기 · 궤적 1·2타 베이크 · 단계 설정 5곳 이동)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-10-22 01:30:22 +09:00
parent be34565935
commit 3ffc951ceb
31 changed files with 16693 additions and 530 deletions

View File

@ -683,7 +683,7 @@ ModelImporter:
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.15
- time: 0.0735
functionName: Projectile
data: Projectile_10302
objectReferenceParameter: {instanceID: 0}

View File

@ -804,6 +804,63 @@ ModelImporter:
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: Attack2_S_10701
takeName: Take 001
internalID: 3060872287085348379
firstFrame: 0
lastFrame: 34
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 0
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 0
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0
functionName: LookAtTarget
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.319
functionName: ShowEffect
data: Effect_Slash_10102_4
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.379
functionName: Move
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0.3
intParameter: 0
messageOptions: 0
- time: 0.439
functionName: Projectile
data: Projectile_10101
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 1
meshes:
lODScreenPercentages: []

View File

@ -634,7 +634,7 @@ AnimatorController:
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_IKPass: 1
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
- serializedVersion: 5

View File

@ -446,7 +446,7 @@ AnimatorController:
m_BlendingMode: 0
m_SyncedLayerIndex: -1
m_DefaultWeight: 0
m_IKPass: 0
m_IKPass: 1
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
- serializedVersion: 5

View File

@ -2303,7 +2303,7 @@ AnimatorState:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: attack3
m_Speed: 0.25
m_Speed: 0.1225
m_CycleOffset: 0
m_Transitions:
- {fileID: 7396964718502629461}

View File

@ -22,6 +22,34 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-8833876555127775869
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack3
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -7107328108826606063}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 1702301948168947093, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-8757538407910549282
AnimatorState:
serializedVersion: 6
@ -43,7 +71,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 1827226128182048838, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
m_Motion: {fileID: -998496362607748373, guid: 53058ef486fc88f49820c30b8ca9e674,
type: 3}
m_Tag:
m_SpeedParameter:
@ -72,34 +100,6 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-7785429122263097812
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack2c
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 6867887696765296130}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 6641085478485924818, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-7760995152898552014
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -170,6 +170,28 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-7107328108826606063
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 6123893681015815013}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-6995089492646688719
AnimatorState:
serializedVersion: 6
@ -220,28 +242,6 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-6303488384549399601
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -7785429122263097812}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-5940922149749640003
AnimatorState:
serializedVersion: 6
@ -324,6 +324,28 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-5572874429042745349
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -8833876555127775869}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.75
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-5065368659107793234
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -346,84 +368,6 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &-5049265843962658925
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1457214211898673553}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-4643384778099596019
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack2b
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -6303488384549399601}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 3060872287085348379, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-4047895833455868784
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack3
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 6848315810752270045}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 1827226128182048838, guid: 6c44c397d64b80543a6d1c1ccf35589e,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-3662637916441429638
AnimatorState:
serializedVersion: 6
@ -480,18 +424,18 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-2630414053381351969
--- !u!1102 &-2450174865730894799
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack2f
m_Name: Attack3d
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 3733479137453790388}
- {fileID: 7176115115811901095}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -501,35 +445,13 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -6788666626592393668, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
m_Motion: {fileID: 7731641710072435382, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-2463007587306551008
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -2630414053381351969}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-1818568085792577103
AnimatorState:
serializedVersion: 6
@ -541,7 +463,7 @@ AnimatorState:
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 1829211669066088794}
- {fileID: -5572874429042745349}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@ -551,35 +473,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -998496362607748373, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-1457214211898673553
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack2e
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -2463007587306551008}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 6234510843852800090, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
m_Motion: {fileID: 3060872287085348379, guid: d49af005f8f03dd40944d120d5009866,
type: 3}
m_Tag:
m_SpeedParameter:
@ -640,6 +534,84 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-1204854857182881208
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack3f
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 598150552926310329}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -5912188926831197812, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-1140536437572950504
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -2450174865730894799}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &-1106846073798923778
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack4
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 2775120184130965169}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -998496362607748373, guid: 6c44c397d64b80543a6d1c1ccf35589e,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-797689860110217983
AnimatorState:
serializedVersion: 6
@ -2306,9 +2278,6 @@ AnimatorStateMachine:
- serializedVersion: 1
m_State: {fileID: -1818568085792577103}
m_Position: {x: 0, y: 50, z: 0}
- serializedVersion: 1
m_State: {fileID: -4047895833455868784}
m_Position: {x: 0, y: 110, z: 0}
- serializedVersion: 1
m_State: {fileID: -797689860110217983}
m_Position: {x: 35, y: 175, z: 0}
@ -2319,20 +2288,26 @@ AnimatorStateMachine:
m_State: {fileID: -6995089492646688719}
m_Position: {x: 10, y: -30, z: 0}
- serializedVersion: 1
m_State: {fileID: -4643384778099596019}
m_State: {fileID: -8833876555127775869}
m_Position: {x: 45, y: 35, z: 0}
- serializedVersion: 1
m_State: {fileID: -7785429122263097812}
m_State: {fileID: 6123893681015815013}
m_Position: {x: 80, y: 100, z: 0}
- serializedVersion: 1
m_State: {fileID: 53093606317774197}
m_State: {fileID: 2607936901088851072}
m_Position: {x: 115, y: 165, z: 0}
- serializedVersion: 1
m_State: {fileID: -1457214211898673553}
m_State: {fileID: -2450174865730894799}
m_Position: {x: 150, y: 230, z: 0}
- serializedVersion: 1
m_State: {fileID: -2630414053381351969}
m_State: {fileID: 3602972285962933543}
m_Position: {x: 185, y: 295, z: 0}
- serializedVersion: 1
m_State: {fileID: -1204854857182881208}
m_Position: {x: 220, y: 360, z: 0}
- serializedVersion: 1
m_State: {fileID: -1106846073798923778}
m_Position: {x: 255, y: 425, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
@ -2397,34 +2372,6 @@ AnimatorStateMachine:
m_ExitPosition: {x: 300, y: 60, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: 110211406}
--- !u!1102 &53093606317774197
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack2d
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -5049265843962658925}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -5059006814000262888, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &146044103495546524
AnimatorState:
serializedVersion: 6
@ -2453,6 +2400,28 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &598150552926310329
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1106846073798923778}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &623298470344145488
AnimatorState:
serializedVersion: 6
@ -2605,28 +2574,6 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &1829211669066088794
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4643384778099596019}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &2408926578621495657
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -2649,6 +2596,34 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &2607936901088851072
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack3c
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -1140536437572950504}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -4045831500588228705, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &2667104774637161799
AnimatorState:
serializedVersion: 6
@ -2704,6 +2679,28 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &2775120184130965169
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -5708076101590037915}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.8
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &2846861087779601784
AnimatorState:
serializedVersion: 6
@ -2784,6 +2781,34 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &3602972285962933543
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack3e
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 5121688532890949397}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: -6577145938085917429, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &3688501896258247423
AnimatorState:
serializedVersion: 6
@ -2811,28 +2836,6 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &3733479137453790388
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4047895833455868784}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &4622039596610312686
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -2877,6 +2880,28 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &5121688532890949397
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -1204854857182881208}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &5856218280474857649
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -2921,6 +2946,28 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &5868107653792152182
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 2607936901088851072}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.15
m_TransitionOffset: 0
m_ExitTime: 0.9
m_HasExitTime: 1
m_HasFixedDuration: 0
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &6082278240856233531
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -2943,6 +2990,34 @@ AnimatorStateTransition:
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1102 &6123893681015815013
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Attack3b
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 5868107653792152182}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 9093586079265926502, guid: eb4cd7aeba3f5bf4fb3ee03443437acb,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &6198832838648419432
AnimatorStateTransition:
m_ObjectHideFlags: 1
@ -2993,7 +3068,7 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &6848315810752270045
--- !u!1101 &7176115115811901095
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
@ -3002,29 +3077,7 @@ AnimatorStateTransition:
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -5708076101590037915}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.8
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1101 &6867887696765296130
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions: []
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 53093606317774197}
m_DstState: {fileID: 3602972285962933543}
m_Solo: 0
m_Mute: 0
m_IsExit: 0

View File

@ -1212,6 +1212,327 @@ ModelImporter:
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: Attack3_S_10701
takeName: Take 001
internalID: 1702301948168947093
firstFrame: 3
lastFrame: 8
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 0
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0
functionName: LookAtTarget
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.2
functionName: ShowEffect
data: Effect_Slash_10101_2
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.4
functionName: Move
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0.05
intParameter: 0
messageOptions: 0
- time: 0.6
functionName: Projectile
data: Projectile_10101
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: Attack3b_S_10701
takeName: Take 001
internalID: 9093586079265926502
firstFrame: 3
lastFrame: 8
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 0
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0
functionName: LookAtTarget
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.2
functionName: ShowEffect
data: Effect_Slash_10101_2
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.4
functionName: Move
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0.05
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: Attack3c_S_10701
takeName: Take 001
internalID: -4045831500588228705
firstFrame: 3
lastFrame: 8
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 0
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0
functionName: LookAtTarget
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.2
functionName: ShowEffect
data: Effect_Slash_10101_2
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.4
functionName: Move
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0.05
intParameter: 0
messageOptions: 0
- time: 0.6
functionName: Projectile
data: Projectile_10101
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: Attack3d_S_10701
takeName: Take 001
internalID: 7731641710072435382
firstFrame: 3
lastFrame: 8
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 0
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0
functionName: LookAtTarget
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.2
functionName: ShowEffect
data: Effect_Slash_10101_2
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.4
functionName: Move
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0.05
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: Attack3e_S_10701
takeName: Take 001
internalID: -6577145938085917429
firstFrame: 3
lastFrame: 8
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 0
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0
functionName: LookAtTarget
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.2
functionName: ShowEffect
data: Effect_Slash_10101_2
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.4
functionName: Move
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0.05
intParameter: 0
messageOptions: 0
- time: 0.6
functionName: Projectile
data: Projectile_10101
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: Attack3f_S_10701
takeName: Take 001
internalID: -5912188926831197812
firstFrame: 3
lastFrame: 8
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 0
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0
functionName: LookAtTarget
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.2
functionName: ShowEffect
data: Effect_Slash_10101_2
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.4
functionName: Move
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0.05
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 1
meshes:
lODScreenPercentages: []

View File

@ -454,6 +454,63 @@ ModelImporter:
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: Attack4_S_10701
takeName: Take 001
internalID: -998496362607748373
firstFrame: 0
lastFrame: 32
wrapMode: 0
orientationOffsetY: 0
level: 0
cycleOffset: 0
loop: 0
hasAdditiveReferencePose: 0
loopTime: 1
loopBlend: 0
loopBlendOrientation: 1
loopBlendPositionY: 1
loopBlendPositionXZ: 0
keepOriginalOrientation: 1
keepOriginalPositionY: 1
keepOriginalPositionXZ: 1
heightFromFeet: 0
mirror: 0
bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
curves: []
events:
- time: 0
functionName: LookAtTarget
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
- time: 0.125
functionName: ShowEffect
data: Effect_Slash_10101_3
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.188
functionName: Move
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0.3
intParameter: 0
messageOptions: 0
- time: 0.281
functionName: Projectile
data: Projectile_10101
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 1
meshes:
lODScreenPercentages: []

View File

@ -1049,7 +1049,7 @@ MonoBehaviour:
createIfMissing: 1
firstFrame: 28
lastFrame: 32
speed: 0.25
speed: 0.1225
maskPath:
bakeRootY: -1
mirror: 1
@ -1064,7 +1064,7 @@ MonoBehaviour:
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.15
normalizedTime: 0.0735
stringParameter: Projectile_{CID}
intParameter: 0
floatParameter: 0
@ -1554,14 +1554,14 @@ MonoBehaviour:
intParameter: 0
floatParameter: 0
- classId: 10701
note: "창 · Spear(WL 10701) → Shinabro Platform Animation Spear 세트(#944 PD 「Platform Animation 에서 찌르기 공격 모션」) · 1타 Spear_Attack1 전체(정면 찌르기 · 30 fps · 내지르기 f4~f6 · 창끝 최대 f6) · 2타 Spear_Attack1 f3~f8 ×6 연타(속도 1 = 1회 0.167 s · exit 0.9 → 0.15 s · 6회 0.9 s · 타격 2a·2c·2e) · 3타 Spear_Attack2 전체(오른쪽 아래로 당겼다 내지르기 · 창끝 최대 f9) — ShowEffect = 내지르기 시작 · Move = 중간 · Projectile = 창끝 최대(편집 모드 포즈 실측 scripts/wl/probes/944_spear_pose.cs · 이전 = Spearman 팩 #840·#940)"
note: "창 · Spear(WL 10701) — #967 PD 「창 1타 횡베기, 2타는 내려치기를 사용한 후 찌르기 연타 마지막으로 한번 더 강한 찌르기 형태로 · 1타와 2타는 기존 창 공격 모션을 활용」 = 1타 Spearman Attack2_S 전체(횡베기 · #840~#943 의 1타 · 이벤트 그때 값) · 2타 Spearman Attack1 전체(머리 위에서 앞 아래로 내려치기 · #840~#943 의 3타 · 이벤트 그때 값 · 궤적 키 Effect_Slash_10102_4 = 연타 키 _2 · 강한 찌르기 키 _3 과 겹치지 않게) · 3타 Platform Spear_Attack1 f3~f8 ×6 연타(#944 의 2타 · 타격 3a·3c·3e) · 4타 Platform Spear_Attack2 전체(오른쪽 아래로 당겼다 내지르기 · #944 의 3타) — 편집 모드 포즈 실측 scripts/wl/probes/944_spear_pose.cs(Render) · 이전 #944 = 1타 Spear_Attack1 찌르기 · 2타 연타 · 3타 Spear_Attack2"
controllerPathOverride: Assets/Res_Addr/Animations/pcanim_spear.controller
enabled: 1
states:
- stateName: attack
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
sourceFbxPath: Assets/ExplosiveLLC/Spearman Warrior Mecanim Animation Pack/Animations/Spearman@Attack2_S.FBX
subClipName: Attack1_S_{CID}
sourceClipName: Spear_Attack1
sourceClipName:
incomingExitTime: 0
createIfMissing: 0
firstFrame: -1
@ -1571,33 +1571,33 @@ MonoBehaviour:
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.133
normalizedTime: 0.305
stringParameter: Effect_Slash_10101_1
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.167
normalizedTime: 0.365
stringParameter:
intParameter: 0
floatParameter: 0.2
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.2
normalizedTime: 0.425
stringParameter: Projectile_10101
intParameter: 0
floatParameter: 0
- stateName: Attack2
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
sourceFbxPath: Assets/ExplosiveLLC/Spearman Warrior Mecanim Animation Pack/Animations/Spearman@Attack1.FBX
subClipName: Attack2_S_{CID}
sourceClipName: Spear_Attack1
sourceClipName: Attack1
incomingExitTime: 0.775
createIfMissing: 0
firstFrame: 3
lastFrame: 8
speed: 1
firstFrame: -1
lastFrame: -1
speed: 0
events:
- functionName: LookAtTarget
time: 0
@ -1609,199 +1609,237 @@ MonoBehaviour:
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
normalizedTime: 0.319
stringParameter: Effect_Slash_10102_4
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
normalizedTime: 0.379
stringParameter:
intParameter: 0
floatParameter: 0.05
floatParameter: 0.3
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.6
normalizedTime: 0.439
stringParameter: Projectile_10101
intParameter: 0
floatParameter: 0
- stateName: Attack2b
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack2b_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- stateName: Attack2c
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack2c_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.6
stringParameter: Projectile_10101
intParameter: 0
floatParameter: 0
- stateName: Attack2d
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack2d_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- stateName: Attack2e
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack2e_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.6
stringParameter: Projectile_10101
intParameter: 0
floatParameter: 0
- stateName: Attack2f
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack2f_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- stateName: Attack3
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack2.FBX
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack3_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.75
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.6
stringParameter: Projectile_10101
intParameter: 0
floatParameter: 0
- stateName: Attack3b
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack3b_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- stateName: Attack3c
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack3c_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.6
stringParameter: Projectile_10101
intParameter: 0
floatParameter: 0
- stateName: Attack3d
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack3d_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- stateName: Attack3e
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack3e_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.6
stringParameter: Projectile_10101
intParameter: 0
floatParameter: 0
- stateName: Attack3f
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack1.FBX
subClipName: Attack3f_S_{CID}
sourceClipName: Spear_Attack1
incomingExitTime: 0.9
createIfMissing: 1
firstFrame: 3
lastFrame: 8
speed: 1
events:
- functionName: LookAtTarget
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.2
stringParameter: Effect_Slash_10101_2
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.4
stringParameter:
intParameter: 0
floatParameter: 0.05
- stateName: Attack4
sourceFbxPath: Assets/Shinabro/Platform_Animation/Animation/07_Spear/Stander@Spear_Attack2.FBX
subClipName: Attack4_S_{CID}
sourceClipName: Spear_Attack2
incomingExitTime: 0.9
createIfMissing: 0
createIfMissing: 1
firstFrame: -1
lastFrame: -1
speed: 0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 50ce0d1c1c4eb454c85b90082caba298
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -96,6 +96,17 @@
"fit": 1.4,
"offsetCompensate": true
},
{
"classIds": [
10302
],
"skills": [ "Skill_MeteoStorm" ],
"prefab": "WL_Hit_StaffMeteor",
"scale": 1.0,
"fit": 1.6,
"offsetCompensate": true,
"_note_967": "#967 PD 「지팡이 각성 메테오가 떨어진 후 폭파 연기가 너무 짙은 검은색에 가까운데 자연스러운 흙먼지와 같은 반투명한 브라운 계열로」 — Play 끄기 실측(967_diag2 · 캡처 967h_k1_*): 검은 연기 · 검은 돌 = 운석마다 대상 몸에 뜨는 아래 행 WL_Hit_StaffSkill(먼지 회색 0.42→0.21 · 돌 0.28~0.36) → 메테오만 갈색 사본(먼지 반투명 갈색 α0.6→0.45 · 돌 갈색 · 만들기 scripts/wl/probes/967_meteorhit.cs) · 오브 · 마법책 · 지팡이 주력 피격은 그대로"
},
{
"classIds": [
10301,
@ -330,8 +341,9 @@
10701
],
"stages": [
2
3
],
"_note_967": "#967 창 콤보 4단 — 찌르기 6연타가 2타 → 3타(Attack3~3f_S_10701)로 옮겨 단계 2 → 3",
"prefab": "WL_Impact_SpearBlast",
"scale": 0.4,
"euler": [ 0, -90, -26 ],

View File

@ -1,6 +1,7 @@
{
"enabled": 1,
"rules": [
{ "skill": "Skill_DarkAmbush", "pushScale": 0.0, "knockbackScale": 0.0, "staggerSeconds": 0.15, "_note_967": "#967 PD 「비수 각성 스킬 사용 시 적이 밀려나는 현상이 없도록」 — 각성(환영 난무) 판정 = 원본 Skill_DarkAmbush 충돌체(0.25 s 뒤 1.75 s) · 맞을 때마다 원본 넉백(f_KnockbackTime + AttackKnockBack) + 피격 밀기(MobStagger)가 걸렸다 → 넉백 시작 안 함 · 밀기 × 0 · 맞는 반응은 경직 0.15 s" },
{ "skill": "Skill_ShadowSlash", "pushScale": 0.05, "knockbackScale": 0.0, "staggerSeconds": 0.15, "_note_962": "#962 PD 「비수 주력 사용 시 판정이 발생되지 않는다」 — Play 실측: 판정은 나지만 맞을 때마다 원본 넉백 + 피격 밀기로 더미가 2 s 동안 1.0 → 3.4 m 밀려 제자리 난사 이펙트 밖으로 나가고 4.0 m 를 넘으면 빗나감 → 넉백 끔 · 밀기 × 0.05 · 맞을 때마다 경직 0.15 s(맞는 반응이 보이게)" },
{
"skill": "Skill_DashSlash",

View File

@ -3,6 +3,7 @@
"turnDegPerSec": 1440,
"snapAtHitbox": 1,
"minDistance": 0.05,
"holdClips": [ "Attack4_S_10202", "Attack2_S_10701", "Attack2b_S_10701", "Attack2c_S_10701", "Attack2d_S_10701", "Attack2e_S_10701", "Attack2f_S_10701" ],
"holdClips": [ "Attack4_S_10202", "Attack3_S_10701", "Attack3b_S_10701", "Attack3c_S_10701", "Attack3d_S_10701", "Attack3e_S_10701", "Attack3f_S_10701" ],
"_note_967": "#967 창 콤보 4단(1타 횡베기 · 2타 내려치기 · 3타 찌르기 6연타 · 4타 강한 찌르기) — 찌르기 6연타 클립 이름이 Attack2~2f → Attack3~3f_S_10701 로 바뀌어 유지 목록도 옮김",
"_note_963": "#963 PD 「비수 4타는 플레이어가 방향을 바꿔 공격하지 않고 원래 적을 공격하던 방향 그대로」 — 4타(대상을 뚫고 지나가는 돌진)는 매 프레임 대상 쪽 돌기 때문에 지나간 뒤 156~162° 돌아섰다(Play 실측) → 이 클립 동안은 들어온 순간의 대상 쪽 방향 유지 · 창 2타 찌르기 6연타(Attack2~2f)도 같은 유지(#943-⑤ 방향 고정을 창 따라가기 이펙트로 바꾸며 옮김)"
}

View File

@ -444,6 +444,12 @@ namespace WL.Combat
[Tooltip("#966 타별 호 겨누기(0~1) — 칸 번호 = 타 − 1 · 1 = 호 가운데를 대상(없으면 PC 정면) 쪽으로 호 면 안에서 돌린다 · 0 = 궤적 실측 그대로(비수 1·2타 = PD 「몬스터 방향으로」)")]
public float[] arcAimStages = new float[0];
[Tooltip("#967 타별 수평 반원(0 = 끔 · +1 = 법선 위 = 위에서 볼 때 왼쪽 → 오른쪽 · −1 = 법선 아래 = 오른쪽 → 왼쪽) — 칸 번호 = 타 − 1 · 궤적 실측 면 대신 수평 면 · 호 가운데 = 대상(없으면 PC 정면) 쪽 · 중심 = PC(보정 피벗 높이) · 기울기 · 겨누기 생략(비수 4타 = PD 「플레이어 전방을 반원 형태로 가르는 횡베기」)")]
public float[] arcFlatStages = new float[0];
[Tooltip("#967 수평 반원 중심을 PC 에서 호 가운데 쪽으로 이만큼(m) 민다 · 0 = PC 자리")]
public float arcFlatForward;
/// <summary>#966 이 타의 호 겨누기 비율(0~1) — 없으면 0.</summary>
public float StageAim(string effectName)
{
@ -453,6 +459,16 @@ namespace WL.Combat
return Mathf.Clamp01(arcAimStages[st - 1]);
}
/// <summary>#967 이 타의 수평 반원 부호(+1 · −1) — 없으면 0(끔).</summary>
public float StageFlat(string effectName)
{
if (arcFlatStages == null || arcFlatStages.Length == 0 || string.IsNullOrEmpty(effectName)) return 0f;
int i = effectName.LastIndexOf('_'), st;
if (i < 0 || !int.TryParse(effectName.Substring(i + 1), out st) || st < 1 || st > arcFlatStages.Length) return 0f;
float v = arcFlatStages[st - 1];
return Mathf.Abs(v) < 0.01f ? 0f : Mathf.Sign(v);
}
/// <summary>#964 이 타(ShowEffect 이름 끝 숫자 · Effect_Slash_{직업}_{타})의 호 크기 배율 — 없으면 1.</summary>
public float StageSizeMul(string effectName)
{

View File

@ -6362,8 +6362,8 @@ ParticleSystem:
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient:
serializedVersion: 2
key0: {r: 0.93, g: 0.91, b: 0.88, a: 0.7}
key1: {r: 0.84, g: 0.84, b: 0.86, a: 0.55}
key0: {r: 0.66, g: 0.52, b: 0.38, a: 0.55}
key1: {r: 0.55, g: 0.44, b: 0.33, a: 0.4}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
@ -49604,8 +49604,8 @@ ParticleSystem:
startColor:
serializedVersion: 2
minMaxState: 2
minColor: {r: 0.78, g: 0.75, b: 0.72, a: 0.8}
maxColor: {r: 0.93, g: 0.91, b: 0.88, a: 0.8}
minColor: {r: 0.6, g: 0.47, b: 0.34, a: 0.7}
maxColor: {r: 0.72, g: 0.58, b: 0.43, a: 0.7}
maxGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}

View File

@ -0,0 +1,11 @@
{
"enabled": 1,
"classes": [ 10402, 10401 ],
"states": [ "attack", "Bow_Attack2", "Bow_Attack3", "Bow_Skill4_Push" ],
"rightOffset": [ 0.17, -0.03, -0.02 ],
"leftOffset": [ -0.10, -0.03, 0.12 ],
"weight": 1.0,
"rampIn": 0.15,
"rampOut": 0.85,
"note": "#967 PD 「활 기본 공격시에도 한쪽 손이 가만히 있는 동작처럼 보이는 현상 — 위에서 내려다 볼 때 특히 · 아래에서 위를 볼 때도 한손만 쓰는 것처럼」 — 원인(편집 모드 손 실측 scripts/wl/probes/967_bowhands.cs): 활 1·2타 두 손이 머리 높이에서 앞뒤 일직선(좌우 0.00~0.15 m)이라 화면 위/아래로 쏠 때 큰 머리가 한 손을 가린다 → 이 상태들을 재생하는 동안 IK 로 당기는 손(오른손)을 PC 오른쪽 0.17 m(머리 옆으로 보이게), 활 손(왼손)을 앞 0.12 m · 왼쪽 0.10 m 더 뻗는다(머리 앞으로 활이 나오게 · 1차 값 좌우 ±0.2 는 화면 아래를 볼 때 팔을 양옆으로 벌린 모양 · Play 캡처 967_b_dn_on) · 손 방향은 애니메이션 그대로 · 가중치 = 상태 0.15 까지 오름 · 0.85 부터 내림 · 컨트롤러 기본 층 IK Pass 필요(pcanim_archer · pcanim_rookiearcher) · 값은 PM 추정(Play 캡처로 확인)"
}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: a57eaf963771fc348aabe0355185dad2
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -88,21 +88,29 @@
10701
],
"stage": 1,
"frontReach": 1.5,
"_note_943": "#943-⑥ PD 「창 사거리를 실제 창 길이에 맞게」 — 앞 끝 = 창끝 정면 도달 실측(편집 모드 · 게임과 같은 PC LH_M05 × 1.0527 · 창 WL_W_Spear_T05_003 1.846 m · 60 Hz 포즈 · AgentScripts/WL828_TrailBake.ProbeDump): 1·2타(수평 회전 베기) 최대 1.29 · 3타(내려찍기) 1.55 m. 이전 2.66~2.78 = 사거리 2.5 크기 궤적 기준"
"frontReach": 1.29,
"_note_943": "#943-⑥ PD 「창 사거리를 실제 창 길이에 맞게」 — 앞 끝 = 창끝 정면 도달 실측(편집 모드 · 게임과 같은 PC LH_M05 × 1.0527 · 창 WL_W_Spear_T05_003 1.846 m · 60 Hz 포즈 · AgentScripts/WL828_TrailBake.ProbeDump): 1·2타(수평 회전 베기) 최대 1.29 · 3타(내려찍기) 1.55 m. 이전 2.66~2.78 = 사거리 2.5 크기 궤적 기준",
"_note_967": "#967 창 콤보 4단 — 1타 = Spearman Attack2_S 횡베기(#943 실측 1.29) · 2타 = Spearman Attack1 내려치기(#943 실측 1.55) · 3타 = 찌르기 6연타(#944 의 2타 값 1.5) · 4타 = 강한 찌르기(#944 의 3타 값 1.47)"
},
{
"classIds": [
10701
],
"stage": 2,
"frontReach": 1.5
"frontReach": 1.55
},
{
"classIds": [
10701
],
"stage": 3,
"frontReach": 1.5
},
{
"classIds": [
10701
],
"stage": 4,
"frontReach": 1.47
},
{

View File

@ -5,12 +5,16 @@
],
"shots": 3,
"shotState": "attack",
"shotClip": "FR_Bow1_10402",
"drawNormalized": 0.8,
"fromNormalized": 0.55,
"shotSpeed": 2.5,
"shotClip": "BowShot1_S_10402",
"drawNormalized": 0.5,
"chargeFromNormalized": 0.3,
"chargeDrawSeconds": 0.35,
"releaseNormalized": 0.56,
"fromNormalized": 0.3,
"shotSpeed": 1.75,
"endNormalized": 0.97,
"chargeSeconds": 0.6,
"_note_967": "#967 PD 「주력 스킬 모으기 시 활을 들지 않는 손이 멈춰 있는데 자연스럽게 활을 쏠 때와 같이 활시위를 당기는 포즈로 모으도록」 — 원인(편집 모드 손 실측 scripts/wl/probes/967_bowhands.cs): #954 에 1타 클립이 FR_Bow1 → BowShot1_S_10402(Archer RangeAttack1)로 바뀌었는데 모으기 자리 0.8 · 놓는 클립 이름 FR_Bow1 이 그대로라 ① 모으기 = 시위를 놓고 활을 내린 뒤 자세(왼손 높이 0.39 m · 오른손 정지)에서 멈춤 ② 놓는 이벤트를 못 찾아 0.92(활 내린 뒤)에 발사. 수정 = 모으기 첫 0.35 s 에 0.30(활 든 채 턱 앞 시위)→0.50(끝까지 당김 · 오른손 뒤 0.36 m) 당긴 뒤 유지 · 발사 = 놓는 순간 0.56 · 둘째 발부터 0.30 에서 다시 당겨 쏨(배속 1.75 = 발 간격 약 0.1 s · 이전과 같은 박자) · 놓는 클립 이름 BowShot1_S_10402",
"socket": "w_archer_l",
"chargeFx": "WL/Fx/WL_Fx_BowCharge",
"chargeFxScale": 0.08,

View File

@ -174,6 +174,37 @@
"launchHeight": 0.0,
"launchSeconds": 0.6,
"stunSeconds": 0.0,
"meteor": 1,
"meteorRule": {
"skill": "Attack3Meteor",
"center": "target",
"fx": {
"prefab": "WL/Fx/WL_Fx_Meteor01",
"scale": 0.45,
"bodyScale": 0,
"offset": [ 0, 0, 0 ],
"euler": [ 0, 0, 0 ],
"life": 1.6,
"fade": 0.3,
"follow": 0,
"socket": "",
"head": 0,
"headPull": 0.08
},
"hitDelay": 0.0,
"spreadSpeed": 0,
"radius": 1.2,
"launchHeight": 0,
"launchSeconds": 0.6,
"stunSeconds": 0,
"endAfter": 0.3,
"meteors": 1,
"meteorArea": 0.0,
"meteorInterval": 0.0,
"meteorImpact": 0.67,
"meteorYaw": 30
},
"_note_967": "#967 PD 「지팡이 공격 마지막 타 — 포즈 지속시간 0.5초 늘리고 · 기본 공격 투사체 대신 메테오(각성 스킬에 사용중인 이펙트) 한 발이 대상에게 떨어지도록」 — meteor 1 = 3타 투사체를 쏘는 순간 넘겨받아 숨기고 대상 자리(meteorArea 0)에 각성과 같은 운석(WL_Fx_Meteor01 · 배율 0.45 · 낙하 0.67 s) 1개 · 땅에 닿는 순간 반경 1.2 m(공격표 3타 aoe_radius_m 과 같은 값) 안 적에게 그 투사체 피해(띄움은 WLStageHitReaction 10302 3행 그대로) · 기절 0 · 바위 솟음(fx)은 메테오 3타에선 띄우지 않음(PM 해석 — 각성 메테오와 같은 겉모습) · 포즈 = CombatAnimMapping 10302 attack3 속도 0.25 → 0.1225(상태 0.53 → 1.09 s · idle 전환 시작 0.48 → 0.98 s · 발사 시각 0.08 s 유지)",
"_note_948": "#948 PD 「3타 바위 크기 절반」 fx.scale 0.3 → 0.15 · 띄움·기절은 WLStageHitReaction 10302 3행(바위 등장 0.2 s 뒤 Fling)으로 옮겨 0 · 갈라짐(crack) 검정 → 브라운은 프리팹 입자 시작색"
},
"castCircleClasses": [

View File

@ -29,12 +29,14 @@
9003,무희의 쌍검,Dagger,10201,pcanim_bladedancer,3,DEX,1.0,3,DualBlades_Attack3,Area,4,0.3,1,0,1.5,0,0,0,Projectile_10201,Effect_Slash_10201_3,Effect_Hit_10201,703202|703203,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
9005,정령의 셉터,Staff,10303,pcanim_summoner,4,INT,1.0,1,attack,Projectile,1,1.2,5,0,0,12,0,0,Projectile_10303,,Effect_Hit_10303,703307|703309,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids
9009,마법책(가칭),Staff,10303,pcanim_summoner,4,INT,1.0,1,attack,Projectile,1,1.2,5,0,0,12,0,0,Projectile_10303,,Effect_Hit_10303,703307|703309,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids
9006,철창(가칭),Spear,10701,pcanim_spear,2,DEX,1.0,1,attack,MeleeArc,1,1.1,1.5,60,0,0,0,0.3,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx
9006,철창(가칭),Spear,10701,pcanim_spear,2,DEX,1.0,2,Attack2,MeleeArc,1,1.1,1.5,60,0,0,0,0.2,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx
9006,철창(가칭),Spear,10701,pcanim_spear,2,DEX,1.0,3,Attack3,MeleeArc,1,1.7,1.47,40,0,0,1,0.5,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx
9007,은창(가칭),Spear,10701,pcanim_spear,3,DEX,1.0,1,attack,MeleeArc,1,1.1,1.5,60,0,0,0,0.3,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx
9007,은창(가칭),Spear,10701,pcanim_spear,3,DEX,1.0,2,Attack2,MeleeArc,1,1.1,1.5,60,0,0,0,0.2,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx
9007,은창(가칭),Spear,10701,pcanim_spear,3,DEX,1.0,3,Attack3,MeleeArc,1,1.7,1.47,40,0,0,1,0.5,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx
9006,철창(가칭),Spear,10701,pcanim_spear,2,DEX,1.0,1,attack,MeleeArc,1,1.1,1.29,60,0,0,0,0.3,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
9006,철창(가칭),Spear,10701,pcanim_spear,2,DEX,1.0,2,Attack2,MeleeArc,1,1.1,1.55,60,0,0,0,0.3,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
9006,철창(가칭),Spear,10701,pcanim_spear,2,DEX,1.0,3,Attack3,MeleeArc,1,1.1,1.5,60,0,0,0,0.2,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
9006,철창(가칭),Spear,10701,pcanim_spear,2,DEX,1.0,4,Attack4,MeleeArc,1,1.7,1.47,40,0,0,1,0.5,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
9007,은창(가칭),Spear,10701,pcanim_spear,3,DEX,1.0,1,attack,MeleeArc,1,1.1,1.29,60,0,0,0,0.3,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
9007,은창(가칭),Spear,10701,pcanim_spear,3,DEX,1.0,2,Attack2,MeleeArc,1,1.1,1.55,60,0,0,0,0.3,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
9007,은창(가칭),Spear,10701,pcanim_spear,3,DEX,1.0,3,Attack3,MeleeArc,1,1.1,1.5,60,0,0,0,0.2,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
9007,은창(가칭),Spear,10701,pcanim_spear,3,DEX,1.0,4,Attack4,MeleeArc,1,1.7,1.47,40,0,0,1,0.5,Projectile_10101,,Effect_Hit_10101,,M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
9008,대검(가칭),Greatsword,10801,pcanim_greatsword,2,STR,1.0,1,attack,MeleeArc,1,1.2,1.8,150,0,0,0,0.3,Projectile_10101,,Effect_Hit_10101,703102|703603,M:class_id;anim_controller;anim_state;hitbox_prefab;hit_vfx
9008,대검(가칭),Greatsword,10801,pcanim_greatsword,2,STR,1.0,2,Attack2,MeleeArc,1,1.2,1.8,150,0,0,0,0.15,Projectile_10101,,Effect_Hit_10101,703102|703603,M:class_id;anim_controller;anim_state;hitbox_prefab;hit_vfx
9008,대검(가칭),Greatsword,10801,pcanim_greatsword,2,STR,1.0,3,Attack3,MeleeArc,1,1.9,2.0,180,0,0,0,0.31,Projectile_10101,,Effect_Hit_10101,703102|703603,M:class_id;anim_controller;anim_state;hitbox_prefab;hit_vfx

1 weapon_id weapon_name family class_id anim_controller unlock_phase main_stat attack_speed_mult step anim_state hit_type hits dmg_ratio_per_hit range_m arc_deg aoe_radius_m proj_speed pierce move_m hitbox_prefab slash_vfx hit_vfx ref_skill_ids src
29 9003 무희의 쌍검 Dagger 10201 pcanim_bladedancer 3 DEX 1.0 3 DualBlades_Attack3 Area 4 0.3 1 0 1.5 0 0 0 Projectile_10201 Effect_Slash_10201_3 Effect_Hit_10201 703202|703203 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
30 9005 정령의 셉터 Staff 10303 pcanim_summoner 4 INT 1.0 1 attack Projectile 1 1.2 5 0 0 12 0 0 Projectile_10303 Effect_Hit_10303 703307|703309 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids
31 9009 마법책(가칭) Staff 10303 pcanim_summoner 4 INT 1.0 1 attack Projectile 1 1.2 5 0 0 12 0 0 Projectile_10303 Effect_Hit_10303 703307|703309 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids
32 9006 철창(가칭) Spear 10701 pcanim_spear 2 DEX 1.0 1 attack MeleeArc 1 1.1 1.5 1.29 60 0 0 0 0.3 Projectile_10101 Effect_Hit_10101 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
33 9006 철창(가칭) Spear 10701 pcanim_spear 2 DEX 1.0 2 Attack2 MeleeArc 1 1.1 1.5 1.55 60 0 0 0 0.2 0.3 Projectile_10101 Effect_Hit_10101 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
34 9006 철창(가칭) Spear 10701 pcanim_spear 2 DEX 1.0 3 Attack3 MeleeArc 1 1.7 1.1 1.47 1.5 40 60 0 0 1 0 0.5 0.2 Projectile_10101 Effect_Hit_10101 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
35 9007 9006 은창(가칭) 철창(가칭) Spear 10701 pcanim_spear 3 2 DEX 1.0 1 4 attack Attack4 MeleeArc 1 1.1 1.7 1.5 1.47 60 40 0 0 0 1 0.3 0.5 Projectile_10101 Effect_Hit_10101 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
36 9007 은창(가칭) Spear 10701 pcanim_spear 3 DEX 1.0 2 1 Attack2 attack MeleeArc 1 1.1 1.5 1.29 60 0 0 0 0.2 0.3 Projectile_10101 Effect_Hit_10101 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
37 9007 은창(가칭) Spear 10701 pcanim_spear 3 DEX 1.0 3 2 Attack3 Attack2 MeleeArc 1 1.7 1.1 1.47 1.55 40 60 0 0 1 0 0.5 0.3 Projectile_10101 Effect_Hit_10101 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
38 9007 은창(가칭) Spear 10701 pcanim_spear 3 DEX 1.0 3 Attack3 MeleeArc 1 1.1 1.5 60 0 0 0 0.2 Projectile_10101 Effect_Hit_10101 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
39 9007 은창(가칭) Spear 10701 pcanim_spear 3 DEX 1.0 4 Attack4 MeleeArc 1 1.7 1.47 40 0 0 1 0.5 Projectile_10101 Effect_Hit_10101 M:class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx #967:4단(1 횡베기 Spearman Attack2_S · 2 내려치기 Spearman Attack1 · 3 찌르기 6연타 · 4 강한 찌르기 · 2단 피해 1.1 = 1단 값 임시)
40 9008 대검(가칭) Greatsword 10801 pcanim_greatsword 2 STR 1.0 1 attack MeleeArc 1 1.2 1.8 150 0 0 0 0.3 Projectile_10101 Effect_Hit_10101 703102|703603 M:class_id;anim_controller;anim_state;hitbox_prefab;hit_vfx
41 9008 대검(가칭) Greatsword 10801 pcanim_greatsword 2 STR 1.0 2 Attack2 MeleeArc 1 1.2 1.8 150 0 0 0 0.15 Projectile_10101 Effect_Hit_10101 703102|703603 M:class_id;anim_controller;anim_state;hitbox_prefab;hit_vfx
42 9008 대검(가칭) Greatsword 10801 pcanim_greatsword 2 STR 1.0 3 Attack3 MeleeArc 1 1.9 2.0 180 0 0 0 0.31 Projectile_10101 Effect_Hit_10101 703102|703603 M:class_id;anim_controller;anim_state;hitbox_prefab;hit_vfx

View File

@ -36,6 +36,7 @@ namespace WL.Combat.Weapon
var pc = MyValue.MyPC;
if (pc == null) return;
if (pc.GetComponent<WLBowChargeReceiver>() == null) pc.gameObject.AddComponent<WLBowChargeReceiver>();
WLBowPoseIK.Ensure(pc); // #967 활 쏘는 자세 두 손 벌리기(IK)
}
}

View File

@ -0,0 +1,107 @@
// ─────────────────────────────────────────────────────────────────────────────
// WLBowPoseIK.cs — 활 쏘는 자세에서 두 손을 머리 바깥으로 벌린다 (#967 · 2026-10-22)
//
// PD 원문: 「활 기본 공격시에도 한쪽 손이 가만히 있는 동작처럼 보이는 현상을 수정해줘. (위에서 아래로 내려다 보는 각도일 때 특히 두드러지며, 아래에서 위를 볼때도 한손만 쓰는 것처럼 보임)」
// ■ 원인(편집 모드 손 실측 · 조직 레포 scripts/wl/probes/967_bowhands.cs) — 활 1·2타(Archer RangeAttack1 · BowShot1/2_S) 두 손이 머리 높이(0.6~0.86 m · 머리 0.70 m)에서
// 앞뒤 일직선(활 손 앞 0.29 m · 당기는 손 뒤 0.36 m · 좌우 0.00~0.15 m) → 위 카메라에서 화면 위/아래로 쏘면 큰 머리가 한 손을 가린다(위를 보면 활 손 · 아래를 보면 당기는 손).
// ■ 활 직업 PC 애니메이터의 IK(OnAnimatorIK · 컨트롤러 기본 층 IK Pass) — states 의 상태를 재생하는 동안 두 손 목표 = 애니메이션 손 위치 + PC 기준 오프셋
// (rightOffset = 당기는 손 · leftOffset = 활 손 · (오른쪽, 위, 앞) m) · 손 방향(회전)은 애니메이션 그대로 · 가중치 = 상태 정규화 시각 rampIn 까지 0 → weight · rampOut 부터 weight → 0 · 전환 중엔 두 상태 가중치를 섞는다.
// ■ 붙이기 = WLBowChargeBoot 가 0.5 s 마다 MyValue.MyPC 의 애니메이터 오브젝트에 보장(Ensure).
// ■ 값 = Resources/WL/WLBowPoseIK.json (C45) · enabled 0 = 끔 · RuntimeDisabled(프로브 전후 비교용)
// 🔴 Debug.LogError 금지(원본 팝업).
// ─────────────────────────────────────────────────────────────────────────────
using System.Collections.Generic;
using UnityEngine;
namespace WL.Combat.Weapon
{
[System.Serializable]
public class WLBowPoseIKJson
{
public int enabled = 0;
public int[] classes = new int[0];
public string[] states = new string[0]; // 기본 층 상태 이름(활 기본 공격 · 속사가 쓰는 상태)
public float[] rightOffset = { 0f, 0f, 0f }; // 당기는 손(오른손) 목표 오프셋 — PC 기준 (오른쪽, 위, 앞) m
public float[] leftOffset = { 0f, 0f, 0f }; // 활 손(왼손)
public float weight = 1f;
public float rampIn = 0.15f, rampOut = 0.85f; // 상태 정규화 시각 — 0 → rampIn 가중치 오름 · rampOut → 1 내림
public string note = "";
}
public sealed class WLBowPoseIK : MonoBehaviour
{
public const string ResourcesPath = "WL/WLBowPoseIK";
public static bool RuntimeDisabled;
public static int Attached, Frames;
public static float LastWeight;
public static string LastLog = "";
static WLBowPoseIKJson s_cfg;
static readonly HashSet<int> s_hashes = new HashSet<int>();
Animator _an; PCActor _pc;
static WLBowPoseIKJson Cfg
{
get
{
if (s_cfg != null) return s_cfg;
s_cfg = new WLBowPoseIKJson(); s_hashes.Clear();
var ta = Resources.Load<TextAsset>(ResourcesPath);
if (ta == null) { LastLog = "설정 없음 " + ResourcesPath; return s_cfg; }
try { JsonUtility.FromJsonOverwrite(ta.text, s_cfg); } catch (System.Exception ex) { LastLog = "설정 파싱 실패 — " + ex.Message; }
if (s_cfg.states != null) foreach (var s in s_cfg.states) if (!string.IsNullOrEmpty(s)) s_hashes.Add(Animator.StringToHash(s));
return s_cfg;
}
}
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void Reset() { s_cfg = null; s_hashes.Clear(); RuntimeDisabled = false; Attached = Frames = 0; LastWeight = 0f; LastLog = ""; }
/// <summary>활 직업이면 PC 애니메이터 오브젝트에 붙인다(이미 있으면 그대로).</summary>
public static void Ensure(PCActor pc)
{
if (pc == null || pc.m_animation == null) return;
var c = Cfg; if (c.enabled == 0) return;
var go = pc.m_animation.gameObject;
if (go.GetComponent<WLBowPoseIK>() != null) return;
go.AddComponent<WLBowPoseIK>(); Attached++;
}
static Vector3 V(float[] a) { return a != null && a.Length >= 3 ? new Vector3(a[0], a[1], a[2]) : Vector3.zero; }
float StateWeight(AnimatorStateInfo st, WLBowPoseIKJson c)
{
if (!s_hashes.Contains(st.shortNameHash)) return 0f;
float n = Mathf.Clamp01(st.normalizedTime);
float w = 1f;
if (c.rampIn > 0.001f && n < c.rampIn) w = n / c.rampIn;
if (c.rampOut < 0.999f && n > c.rampOut) w = Mathf.Min(w, (1f - n) / Mathf.Max(0.001f, 1f - c.rampOut));
return Mathf.Clamp01(w) * Mathf.Clamp01(c.weight);
}
void OnAnimatorIK(int layer)
{
if (layer != 0 || RuntimeDisabled) return;
var c = Cfg; if (c.enabled == 0 || s_hashes.Count == 0) return;
if (_an == null) _an = GetComponent<Animator>();
if (_pc == null) _pc = GetComponentInParent<PCActor>();
if (_an == null || _pc == null || c.classes == null || System.Array.IndexOf(c.classes, _pc.Get_ID()) < 0) return;
float w;
if (_an.IsInTransition(0))
{
float tr = Mathf.Clamp01(_an.GetAnimatorTransitionInfo(0).normalizedTime);
w = Mathf.Lerp(StateWeight(_an.GetCurrentAnimatorStateInfo(0), c), StateWeight(_an.GetNextAnimatorStateInfo(0), c), tr);
}
else w = StateWeight(_an.GetCurrentAnimatorStateInfo(0), c);
LastWeight = w;
if (w <= 0.001f) return;
var rot = _pc.transform.rotation;
var r = _an.GetIKPosition(AvatarIKGoal.RightHand) + rot * V(c.rightOffset);
var l = _an.GetIKPosition(AvatarIKGoal.LeftHand) + rot * V(c.leftOffset);
_an.SetIKPositionWeight(AvatarIKGoal.RightHand, w); _an.SetIKPosition(AvatarIKGoal.RightHand, r);
_an.SetIKPositionWeight(AvatarIKGoal.LeftHand, w); _an.SetIKPosition(AvatarIKGoal.LeftHand, l);
Frames++;
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6fdce4d199995354c849182a2db94454

View File

@ -89,6 +89,12 @@ namespace WL.Combat.Weapon
{
if (pb == null) return;
WLStaffEarth.OnProjectileSet(pb); // #935 지팡이 3타 투사체 표시(쏠 때마다 · 이미 겉모습을 붙인 풀 인스턴스도)
try { OnSetVisual(pb); }
finally { WLStaffEarth.AfterProjectileSet(pb); } // #967 3타 메테오 = 겉모습 자식까지 붙은 뒤 넘겨받아 모두 끈다
}
static void OnSetVisual(ProjectileBase pb)
{
if (!s_loaded) Load();
WLProjectileVisualRule rule;
var n = pb.name;

View File

@ -31,6 +31,11 @@ namespace WL.Combat.Weapon
public string shotState = "attack";
public string shotClip = "FR_Bow1_10402"; // 놓는 순간 = 이 클립의 Projectile 이벤트
public float drawNormalized = 0.8f; // 모으기 동안 멈출 자세(활 당김) · 첫 발 시작
// #967 PD 「주력 스킬 모으기 시 활을 들지 않는 손이 멈춰 있는데 — 활을 쏠 때와 같이 자연스럽게 활시위를 당기는 포즈로 모으도록」 — chargeFromNormalized ≥ 0 이면 모으기 첫 chargeDrawSeconds 동안
// shotState 를 그 자리(활 든 채 시위에 손)부터 drawNormalized(끝까지 당김)까지 재생한 뒤 유지 · < 0 = 이전(처음부터 drawNormalized 정지)
public float chargeFromNormalized = -1f;
public float chargeDrawSeconds = 0.35f;
public float releaseNormalized; // #967 > 0 = 놓는 순간(발사)을 이 정규화 시각으로 · 0 = shotClip 의 Projectile 이벤트
public float fromNormalized = 0.55f; // 둘째 발부터 여기서 재생
public float shotSpeed = 2.5f; // 발 재생 배속
public float endNormalized = 0.97f; // 마지막 발 뒤 여기까지 재생하고 대기
@ -126,7 +131,7 @@ namespace WL.Combat.Weapon
IEnumerator Run()
{
var c = _c; var an = _an;
float releaseN = ReleaseNormalized(an, c.shotClip);
float releaseN = c.releaseNormalized > 0f ? c.releaseNormalized : ReleaseNormalized(an, c.shotClip);
if (releaseN <= 0f) { WLRapidShot.LastLog = "놓는 이벤트 없음 " + c.shotClip; releaseN = 0.92f; }
int n = Mathf.Clamp(c.shots, 1, _shots.Count);
@ -135,7 +140,9 @@ namespace WL.Combat.Weapon
// ② 모으기 — 활 당긴 자세 · 활 흰 빛 · 모으기 이펙트
an.fireEvents = false; _animOwned = true;
an.Play(c.shotState, 0, c.drawNormalized); an.speed = 0f; an.Update(0f);
bool drawing = c.chargeFromNormalized >= 0f && c.chargeFromNormalized < c.drawNormalized; // #967 시위를 당기며 모은다
float poseN = drawing ? c.chargeFromNormalized : c.drawNormalized;
an.Play(c.shotState, 0, poseN); an.speed = 0f; an.Update(0f);
Face();
_socket = FindSocket(_pc, c.socket);
if (_socket != null) { _glow.Begin(_socket, c.glowMaterial); _centerLocal = WLWeaponGlowFx.CenterLocal(_socket); }
@ -147,7 +154,13 @@ namespace WL.Combat.Weapon
{
if (Broken()) { End(false); yield break; }
if (an.speed != 0f) an.speed = 0f;
if (!an.GetCurrentAnimatorStateInfo(0).IsName(c.shotState)) an.Play(c.shotState, 0, c.drawNormalized); // 다른 연출이 상태를 바꾸면 되돌림
if (drawing) // #967 시위 당기기 — chargeDrawSeconds 동안 부드럽게 끝까지 → 유지
{
float dk = Mathf.SmoothStep(0f, 1f, Mathf.Clamp01(t / Mathf.Max(0.01f, c.chargeDrawSeconds)));
float want = Mathf.Lerp(c.chargeFromNormalized, c.drawNormalized, dk);
if (Mathf.Abs(want - poseN) > 1e-4f || !an.GetCurrentAnimatorStateInfo(0).IsName(c.shotState)) { poseN = want; an.Play(c.shotState, 0, poseN); }
}
else if (!an.GetCurrentAnimatorStateInfo(0).IsName(c.shotState)) an.Play(c.shotState, 0, c.drawNormalized); // 다른 연출이 상태를 바꾸면 되돌림
float k = Mathf.Clamp01(t / Mathf.Max(0.01f, c.chargeSeconds));
_glow.Set(c.glowMax * k, col, c.glowFill, c.glowRimPower);
if (_charge != null) _charge.transform.position = BowCenter();

View File

@ -78,6 +78,10 @@ namespace WL.Combat.Weapon
public string stateName = "attack3"; // 쏘는 순간 애니메이터 현재 상태 이름(지팡이 콤보는 애니메이터 전환으로 이어져 CurAnim · ComboTracker 단계가 1 에 머문다)
public WLStaffEarthFx fx = new WLStaffEarthFx();
public float launchHeight = 1.5f, launchSeconds = 0.6f, stunSeconds = 0.5f;
// #967 PD 「지팡이 공격 마지막 타 — 기본 공격 투사체 대신 메테오(각성 스킬에 사용중인 이펙트) 한 발이 대상에게 떨어지도록」 — 1 = 3타 투사체를 쏘는 순간(겉모습을 붙인 뒤) 넘겨받아
// 숨기고 meteorRule(메테오 방식 · 운석 1개 · 대상 자리)로 떨어뜨려 땅에 닿는 순간 그 투사체 피해 · 이 경우 바위 솟음(fx)은 띄우지 않는다 · 0 = 이전(투사체 + 맞은 자리 바위)
public int meteor;
public WLStaffEarthSkill meteorRule = new WLStaffEarthSkill();
}
[System.Serializable]
@ -98,7 +102,8 @@ namespace WL.Combat.Weapon
public static class WLStaffEarth
{
public const string ResourcesPath = "WL/WLStaffEarth";
public static int Casts, TakeOvers, Hits, Launches, Marked, Popups, Errors, Circles, Meteors, SkillCastFxShown;
public static int Casts, TakeOvers, Hits, Launches, Marked, Popups, Errors, Circles, Meteors, SkillCastFxShown, Attack3Meteors; // #967 Attack3Meteors = 3타 투사체를 메테오로 넘겨받은 수
static ProjectileBase s_pendingMeteor; // #967 OnProjectileSet 이 고른 3타 투사체 — 겉모습 훅이 끝난 뒤(AfterProjectileSet) 넘겨받는다
public static string MeteorSrc = ""; public static Vector3 MeteorCenter; public static readonly List<Vector3> MeteorPts = new List<Vector3>(), MeteorCenters = new List<Vector3>(); // #964 검증용(메테오 중심 출처 · 낙하 자리)
public static string LastLog = "";
@ -124,7 +129,7 @@ namespace WL.Combat.Weapon
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
static void Boot()
{
s_cfg = null; s_prefabs.Clear(); s_marked.Clear();
s_cfg = null; s_prefabs.Clear(); s_marked.Clear(); s_pendingMeteor = null;
CombatEvents.SkillCast.Remove(OnSkillCast); CombatEvents.HitConfirmed.Remove(OnHitConfirmed);
if (Cfg.enabled == 0) return;
CombatEvents.SkillCast.Add(OnSkillCast); CombatEvents.HitConfirmed.Add(OnHitConfirmed);
@ -265,12 +270,31 @@ namespace WL.Combat.Weapon
var c = Cfg; if (c.enabled == 0 || pb == null) return;
var pd = pb.Get_ProjectTileData(); var sh = pd != null ? pd.shooter as PCActor : null;
var an = sh != null ? sh.m_animation : null;
bool mark = sh != null && !pd.IsSkill() && sh.Get_ID() == c.popup.classId && an != null && an.GetCurrentAnimatorStateInfo(0).IsName(c.popup.stateName);
// #967 3타 발사 이벤트(attack3 0.08 s)가 attack2 → attack3 전환 중에 나와 현재 상태가 아직 attack2 였다(Play 실측 3타 표시 0) → 전환 중이면 다음 상태도 본다
bool inState = an != null && (an.GetCurrentAnimatorStateInfo(0).IsName(c.popup.stateName) || (an.IsInTransition(0) && an.GetNextAnimatorStateInfo(0).IsName(c.popup.stateName)));
bool mark = sh != null && !pd.IsSkill() && sh.Get_ID() == c.popup.classId && inState;
bool meteor = mark && c.popup.meteor != 0 && c.popup.meteorRule != null && c.popup.meteorRule.meteors > 0;
if (meteor) { s_pendingMeteor = pb; mark = false; } // #967 3타 = 메테오(바위 솟음 표시 안 함)
if (mark) { s_marked.Add(pb.GetInstanceID()); Marked++; } else s_marked.Remove(pb.GetInstanceID());
}
catch (System.Exception ex) { Errors++; LastLog = "3타 표시 실패 — " + ex.Message; }
}
/// <summary>#967 투사체 Set 끝 훅(WLProjectileVisual.OnSet 마지막 · 겉모습 자식까지 붙은 뒤) — OnProjectileSet 이 고른 3타 투사체를 메테오 러너로 넘겨받는다(겉모습 · 판정 상자 · 이동을 끄고 대상 자리에 운석 1개).</summary>
public static void AfterProjectileSet(ProjectileBase pb)
{
if (pb == null || !ReferenceEquals(s_pendingMeteor, pb)) return;
s_pendingMeteor = null;
try
{
var c = Cfg; var pd = pb.Get_ProjectTileData(); if (pd == null || DSUtil.CheckNull(pd.shooter)) return;
if (s_runner == null) { var go = new GameObject("[WL935] StaffEarth"); go.hideFlags = HideFlags.HideInHierarchy; Object.DontDestroyOnLoad(go); s_runner = go.AddComponent<WLStaffEarthRunner>(); }
s_runner.Begin(pb, pd, c.popup.meteorRule);
Attack3Meteors++;
}
catch (System.Exception ex) { Errors++; LastLog = "3타 메테오 실패 — " + ex.Message; }
}
static void OnHitConfirmed(in HitConfirmedEvent e)
{
try

View File

@ -173,6 +173,7 @@ namespace WL.Combat
public static int MappedSpawnCount;
public static int ArcTilted; // #922 기울기를 적용한 호 배치 수(진단)
public static int ArcAimed, ArcYawed; // #966 대상 쪽으로 돌린 호 · 이벤트 각으로 돌린 호(진단)
public static int ArcFlat; // #967 수평 반원으로 놓은 호 수(진단)
private float _arcYaw; // #966 지금 이벤트의 floatParameter(호 위 축 회전 · 도)
// ── 검증용 공개 프로퍼티 (2단계 CSV 샘플러가 읽는다) ────────────────────
@ -1613,7 +1614,18 @@ namespace WL.Combat
// #966 PD 「비수 1타와 2타 공격 이펙트가 실제 몬스터 위치까지 가기 전에 끊어지는 느낌 — 좀 더 몬스터 방향으로」 — 타별 arcAimStages(0~1): 호 가운데(이등분)를
// 대상 쪽(없으면 PC 정면 · 수평)으로 호 면 안에서 그만큼 돌린다(면 · 반지름 · 피벗은 그대로 · 실측: 1타 이등분이 PC 뒤쪽 −Z · 2타 오른쪽이라 앞의 몬스터에 안 닿아 보였다)
var covAim = settings.FindOverride(p.classId);
float aim = covAim != null ? covAim.StageAim(!string.IsNullOrEmpty(cal.clipName) ? cal.clipName : _burstPrefab) : 0f;
string stageKey = !string.IsNullOrEmpty(cal.clipName) ? cal.clipName : _burstPrefab;
// #967 PD 「비수 마지막 타 공격이 너무 먼 거리에서 발생되고 내려치는 형태의 이펙트 — 플레이어 전방을 반원 형태로 가르는 횡베기로」 — 타별 arcFlatStages(±1):
// 궤적 실측 면(4타 = 세로 내려찍기 면 · 피벗 PC 앞 0.68 m)을 버리고 수평 면 · 호 가운데 = 대상(없으면 PC 정면) · 중심 = PC(보정 피벗 높이 + arcFlatForward) · 겨누기 · 이벤트 각 · 기울기 생략
float flat = covAim != null && _pc != null ? covAim.StageFlat(stageKey) : 0f;
if (flat != 0f)
{
var tgtF = _pc.Get_Target(); Vector3 wantF = tgtF != null ? tgtF.Get_position() - _pc.Get_position() : _pc.transform.forward; wantF.y = 0f;
if (wantF.sqrMagnitude < 1e-4f) { wantF = _pc.transform.forward; wantF.y = 0f; }
if (wantF.sqrMagnitude > 1e-6f) { nW = Vector3.up * flat; bW = wantF.normalized; ArcFlat++; }
else flat = 0f;
}
float aim = flat == 0f && covAim != null ? covAim.StageAim(stageKey) : 0f;
if (aim > 0.001f && _pc != null)
{
var tgt = _pc.Get_Target(); Vector3 want = tgt != null ? tgt.Get_position() - _pc.Get_position() : _pc.transform.forward; want.y = 0f;
@ -1621,9 +1633,9 @@ namespace WL.Combat
Vector3 wp = want.normalized; wp -= nW * Vector3.Dot(wp, nW);
if (wp.sqrMagnitude > 1e-3f) { wp.Normalize(); bW = Vector3.Slerp(bW, wp, Mathf.Clamp01(aim)); bW -= nW * Vector3.Dot(bW, nW); if (bW.sqrMagnitude > 1e-8f) { bW.Normalize(); ArcAimed++; } else bW = wp; }
}
if (Mathf.Abs(p.yawOffset) > 0.01f) { var qy = Quaternion.AngleAxis(p.yawOffset, Vector3.up); nW = qy * nW; bW = qy * bW; ArcYawed++; } // #966 이벤트 각
if (flat == 0f && Mathf.Abs(p.yawOffset) > 0.01f) { var qy = Quaternion.AngleAxis(p.yawOffset, Vector3.up); nW = qy * nW; bW = qy * bW; ArcYawed++; } // #966 이벤트 각
// #922 (클래스, 클립) 호 기울기 — 이등분 축 둘레로 돌려 카메라에서 보이는 면을 넓힌다(±중 카메라를 더 마주 보는 쪽)
float tilt = settings.ArcTilt(p.classId, p.source);
float tilt = flat == 0f ? settings.ArcTilt(p.classId, p.source) : 0f;
if (Mathf.Abs(tilt) > 0.01f)
{
var camT = Camera.main;
@ -1633,6 +1645,7 @@ namespace WL.Combat
ArcTilted++;
}
Vector3 pivotW = ToWorldPos(cal.pivot);
if (flat != 0f) { var pcPos = _pc.Get_position(); pivotW = new Vector3(pcPos.x, pivotW.y, pcPos.z) + bW * covAim.arcFlatForward; } // #967 수평 반원 중심 = PC
// ── 균등 스케일 ────────────────────────────────────────────────
float s;

View File

@ -120,6 +120,9 @@ MonoBehaviour:
arcFitBlade: 0
arcSizeMul: 0.924
arcSizeMulStages: []
arcAimStages: []
arcFlatStages: []
arcFlatForward: 0
- classId: 10102
mode: 0
overrideLook: 0
@ -131,6 +134,9 @@ MonoBehaviour:
arcFitBlade: 0
arcSizeMul: 0.924
arcSizeMulStages: []
arcAimStages: []
arcFlatStages: []
arcFlatForward: 0
- classId: 10201
mode: 0
overrideLook: 0
@ -142,6 +148,9 @@ MonoBehaviour:
arcFitBlade: 0
arcSizeMul: 1
arcSizeMulStages: []
arcAimStages: []
arcFlatStages: []
arcFlatForward: 0
- classId: 10202
mode: 0
overrideLook: 1
@ -162,6 +171,12 @@ MonoBehaviour:
- 1
- 0
- 0
arcFlatStages:
- 0
- 0
- 0
- -1
arcFlatForward: 0
- classId: 10501
mode: 0
overrideLook: 0
@ -173,6 +188,9 @@ MonoBehaviour:
arcFitBlade: 0
arcSizeMul: 1
arcSizeMulStages: []
arcAimStages: []
arcFlatStages: []
arcFlatForward: 0
- classId: 10502
mode: 0
overrideLook: 0
@ -184,6 +202,9 @@ MonoBehaviour:
arcFitBlade: 0
arcSizeMul: 1
arcSizeMulStages: []
arcAimStages: []
arcFlatStages: []
arcFlatForward: 0
- classId: 10701
mode: 0
overrideLook: 0
@ -195,6 +216,9 @@ MonoBehaviour:
arcFitBlade: 1
arcSizeMul: 1
arcSizeMulStages: []
arcAimStages: []
arcFlatStages: []
arcFlatForward: 0
useTableWeaponIndices: 1
burstMode: 0
burstTiming: 1
@ -837,25 +861,6 @@ MonoBehaviour:
straight=0.65 sweep=218.9\xB0 pivot=\uCE7C\uB05D\uC6D0 tipR=1.664 hiltR=0.405
dev=0.034 fitQ=0.96 kind=Swing (\uB7F0\uD0C0\uC784 \uB85C\uCEEC=\uD68C\uC804\uB9CC
\xB7 \uCEE8\uD2B8\uB864\uB7EC \uD074\uB9BD)"
- classId: 10701
clipName: Effect_Slash_10101_1
kind: 2
planeNormal: {x: 0.88158125, y: 0.349564, z: 0.31720594}
pivot: {x: 0.65397054, y: 0.591501, z: -0.05616218}
bisector: {x: -0.28329372, y: -0.1457048, z: 0.9479002}
startDir: {x: -0.29784253, y: -0.109399565, z: 0.94832563}
tipRadius: 1.7077701
hiltRadius: 0.16302724
sweepDeg: 4.4824414
stabAxis: {x: -0.2826259, y: -0.38485995, z: 0.87863845}
stabStart: {x: 0.23207891, y: 0.43653736, z: 1.2871335}
stabLength: 0.5966695
quality: 50
source: "wl828m1 2026-10-19 22:18 Attack1_S_10701 f8~f12/60@60Hz n=5(\uD2B8\uB9BC
5\u21925) PC=LH_M05 rootScale=1.0527 weaponK=0.9937 path=0.78 bladeAng=23\xB0
straight=0.77 sweep=4.5\xB0 pivot=\uC190\uC7A1\uC774\uC911\uC2EC tipR=1.708
hiltR=0.163 dev=0.028 fitQ=0.97 kind=Stab (\uB7F0\uD0C0\uC784 \uB85C\uCEEC=\uD68C\uC804\uB9CC
\xB7 \uCEE8\uD2B8\uB864\uB7EC \uD074\uB9BD)"
- classId: 10701
clipName: Effect_Slash_10101_2
kind: 2
@ -932,6 +937,44 @@ MonoBehaviour:
straight=0.68 sweep=219.4\xB0 pivot=\uC190\uC7A1\uC774\uC911\uC2EC tipR=0.376
hiltR=0.348 dev=0.014 fitQ=0.92 kind=Swing (\uB7F0\uD0C0\uC784 \uB85C\uCEEC=\uD68C\uC804\uB9CC
\xB7 \uCEE8\uD2B8\uB864\uB7EC \uD074\uB9BD)"
- classId: 10701
clipName: Effect_Slash_10101_1
kind: 1
planeNormal: {x: 0.038015425, y: 0.9977091, z: -0.055959173}
pivot: {x: 0.074319184, y: 0.5030525, z: -0.035045374}
bisector: {x: -0.98307157, y: 0.047384575, z: 0.17698874}
startDir: {x: 0.5735504, y: -0.067642264, z: -0.8163727}
tipRadius: 1.332726
hiltRadius: 0.5697392
sweepDeg: 270.71988
stabAxis: {x: -0.4314748, y: 0.02015867, z: 0.90189976}
stabStart: {x: 0.8704324, y: 0.4606447, z: -1.1683016}
stabLength: 2.7308962
quality: 50
source: "wl828m1 2026-10-22 01:06 Attack1_S_10701 f24~f32/74@60Hz n=9(\uD2B8\uB9BC
9\u21929) PC=LH_M05 rootScale=1.0527 weaponK=0.9937 path=6.21 bladeAng=281\xB0
straight=0.60 sweep=270.7\xB0 pivot=\uCE7C\uB05D\uC6D0 tipR=1.333 hiltR=0.570
dev=0.041 fitQ=0.94 kind=Swing (\uB7F0\uD0C0\uC784 \uB85C\uCEEC=\uD68C\uC804\uB9CC
\xB7 \uCEE8\uD2B8\uB864\uB7EC \uD074\uB9BD)"
- classId: 10701
clipName: Effect_Slash_10102_4
kind: 1
planeNormal: {x: 0.95719343, y: 0.28941464, z: -0.0044637853}
pivot: {x: 0.25622573, y: 0.3826955, z: 0.07922937}
bisector: {x: -0.25352824, y: 0.84574616, z: 0.46950716}
startDir: {x: -0.1840746, y: 0.5967516, z: -0.7810276}
tipRadius: 1.5382556
hiltRadius: 0.4461397
sweepDeg: 158.71616
stabAxis: {x: 0.119720384, y: -0.45538092, z: 0.8822104}
stabStart: {x: -0.0034473303, y: 1.3192463, z: -1.1360762}
stabLength: 3.0381339
quality: 50
source: "wl828m1 2026-10-22 01:06 Attack2_S_10701 f25~f30/68@60Hz n=6(\uD2B8\uB9BC
6\u21926) PC=LH_M05 rootScale=1.0527 weaponK=0.9937 path=4.19 bladeAng=169\xB0
straight=0.72 sweep=158.7\xB0 pivot=\uCE7C\uB05D\uC6D0 tipR=1.538 hiltR=0.446
dev=0.011 fitQ=0.99 kind=Swing (\uB7F0\uD0C0\uC784 \uB85C\uCEEC=\uD68C\uC804\uB9CC
\xB7 \uCEE8\uD2B8\uB864\uB7EC \uD074\uB9BD)"
swingMinSweepDegrees: 150
swingMinTipHiltRatio: 3
stabMinStraightness: 0.86

View File

@ -262,7 +262,7 @@ MonoBehaviour:
- 0.6
- 0.1
passThrough: 0
- clipContains: Attack3_S_107
- clipContains: Attack2_S_107
frames: 08000000090000000a0000000b0000000c0000000d0000000e0000000f000000100000001100000012000000200000002100000022000000
cm:
- 0.3