WL #954 PD 지시 5건 — ① 활 1·2타 모션 = Archer Warrior 팩 RangeAttack1(활 당기기 · 서브클립 BowShot1/2_S · 발사 0.72 · 이전 FR_Bow0 = 크로스보우 느낌) ② 비수 3타 이펙트 = Slash Effects FREE 「Shiny Slash」 사본 WL_Impact_DaggerSpin(PC 중심 수평 고리 · 배율 1.75 · 녹색 tint 재질 사본) ③ 비수 궤적 녹색 계열 + 3타 모션 = 원본 DualBlades_Attack3(점프 자세 Ninja Attack3 제거 · 이펙트 0.10 · 타격 0.25) ④ 비수 주력 = 「Multiple Slash 2」 사본 WL_Fx_DaggerMulti(원본 베기 렌더러 끔 · 0.5 s · 정면 1.2 m) ⑤ 각성 착지 = 0.5 m · 낙하 0.15 · 전체 0.45 s · 낙하 중 반투명 착지 자세 잔상 + 모델 숨김 → 착지 순간 모델·잔상 2·먼지 · 랜딩 중 공격 금지(IsLanding) · WLImpactFx 설정 Play 마다 재로드

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-10-21 01:54:40 +09:00
parent e1da2ad360
commit e043fcf1c0
29 changed files with 25911 additions and 70 deletions

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 326202b2343de92418b4d103b1460e35
ModelImporter:
serializedVersion: 22200
serializedVersion: 24300
internalIDToNameTable:
- first:
1: 100000
@ -513,6 +513,7 @@ ModelImporter:
materialName: 0
materialSearch: 1
materialLocation: 0
searchTexturesGlobally: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
@ -520,8 +521,6 @@ ModelImporter:
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName: Motion
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
@ -680,6 +679,178 @@ ModelImporter:
maskType: 0
maskSource: {fileID: 101100000, guid: 98e3a59f0df1fa647b89e5370cd555bb, type: 2}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: BowShot1_S_10402
takeName: Take 001
internalID: 1827226128182048838
firstFrame: 0
lastFrame: 20
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.72
functionName: Projectile
data: Projectile_10402
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: BowShot2_S_10402
takeName: Take 001
internalID: -998496362607748373
firstFrame: 0
lastFrame: 20
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.72
functionName: Projectile
data: Projectile_10402
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: BowShot1_S_10401
takeName: Take 001
internalID: 3060872287085348379
firstFrame: 0
lastFrame: 20
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.72
functionName: Projectile
data: Projectile_10401
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: BowShot2_S_10401
takeName: Take 001
internalID: 6641085478485924818
firstFrame: 0
lastFrame: 20
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.72
functionName: Projectile
data: Projectile_10401
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 0
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 1
meshes:
lODScreenPercentages: []
@ -706,6 +877,9 @@ ModelImporter:
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
meshOptimizationFlags: 0
indexFormat: 0
secondaryUVAngleDistortion: 8
@ -1217,7 +1391,8 @@ ModelImporter:
- name: B_Spine1
parentName:
position: {x: -0.2152304, y: -0.00023167043, z: -4.216225e-10}
rotation: {x: 0.000000029802315, y: 0.000000029802312, z: 0.000000029802326, w: 1}
rotation: {x: 0.000000029802315, y: 0.000000029802312, z: 0.000000029802326,
w: 1}
scale: {x: 1, y: 1, z: 1}
- name: B_L_Clavicle
parentName:
@ -1322,7 +1497,8 @@ ModelImporter:
- name: B_Head
parentName:
position: {x: -0.12820907, y: -0.000000020861625, z: 2.842171e-16}
rotation: {x: 0.000000029802305, y: 0.000000029802301, z: 0.000000029802344, w: 1}
rotation: {x: 0.000000029802305, y: 0.000000029802301, z: 0.000000029802344,
w: 1}
scale: {x: 1, y: 1, z: 0.9999999}
- name: B_R_Clavicle
parentName:
@ -1431,7 +1607,8 @@ ModelImporter:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 0
lastHumanDescriptionAvatarSource: {fileID: 9000000, guid: 6113d0ea44252774db53fa756483807d, type: 3}
lastHumanDescriptionAvatarSource: {fileID: 9000000, guid: 6113d0ea44252774db53fa756483807d,
type: 3}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 3
humanoidOversampling: 1

View File

@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: afbbfbe54e2f6d242983469698b3aac3
ModelImporter:
serializedVersion: 22200
serializedVersion: 24300
internalIDToNameTable:
- first:
1: 100000
@ -339,6 +339,7 @@ ModelImporter:
materialName: 0
materialSearch: 1
materialLocation: 1
searchTexturesGlobally: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
@ -346,8 +347,6 @@ ModelImporter:
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
rigImportErrors:
rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
@ -419,6 +418,63 @@ ModelImporter:
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
- serializedVersion: 16
name: Attack3_S_10202
takeName: Take 001
internalID: 1827226128182048838
firstFrame: 0
lastFrame: 35
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.1
functionName: ShowEffect
data: Effect_Slash_10202_3
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 1
messageOptions: 0
- time: 0.14
functionName: Move
data:
objectReferenceParameter: {instanceID: 0}
floatParameter: 0.2
intParameter: 0
messageOptions: 0
- time: 0.25
functionName: Projectile
data: Projectile_10202
objectReferenceParameter: {instanceID: 0}
floatParameter: 0
intParameter: 0
messageOptions: 0
transformMask: []
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
isReadable: 0
meshes:
lODScreenPercentages: []
@ -445,6 +501,9 @@ ModelImporter:
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8

View File

@ -278,7 +278,8 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 49309bb44028b7d46955d1e9e5b36799, type: 2}
m_Motion: {fileID: 1827226128182048838, guid: 326202b2343de92418b4d103b1460e35,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -2992,7 +2993,8 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 7f66eefcaa833114f99e5b86a341f31b, type: 2}
m_Motion: {fileID: -998496362607748373, guid: 326202b2343de92418b4d103b1460e35,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:

View File

@ -369,7 +369,7 @@ AnimatorState:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: DualBlades_Attack3
m_Speed: 1.3
m_Speed: 1.2
m_CycleOffset: 0
m_Transitions:
- {fileID: 2757370606414768772}
@ -382,7 +382,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 1827226128182048838, guid: d13058de2c92ec0429764bd9879ae7b8,
m_Motion: {fileID: 1827226128182048838, guid: afbbfbe54e2f6d242983469698b3aac3,
type: 3}
m_Tag:
m_SpeedParameter:

View File

@ -188,7 +188,8 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 6f2703b45c03b374bba82eb0efa0f731, type: 2}
m_Motion: {fileID: 3060872287085348379, guid: 326202b2343de92418b4d103b1460e35,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -2377,7 +2378,8 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 89213433df6d9db4db4ab02631c6c5b9, type: 2}
m_Motion: {fileID: 6641085478485924818, guid: 326202b2343de92418b4d103b1460e35,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:

View File

@ -570,14 +570,14 @@ MonoBehaviour:
intParameter: 0
floatParameter: 0
- stateName: DualBlades_Attack3
sourceFbxPath: Assets/ExplosiveLLC/Ninja Warrior Mecanim Animation Pack/Animations/Ninja@Attack3_S.FBX
sourceFbxPath: Assets/Res_Addr/Animations/Animation/Assassin/Stander@DualBlades_Attack3.FBX
subClipName: Attack3_S_{CID}
sourceClipName:
incomingExitTime: 0.5
createIfMissing: 0
firstFrame: -1
lastFrame: -1
speed: 1.3
speed: 1.2
events:
- functionName: LookAtTarget
time: 0
@ -589,21 +589,21 @@ MonoBehaviour:
- functionName: ShowEffect
time: 0
useNormalized: 1
normalizedTime: 0.083
normalizedTime: 0.1
stringParameter: Effect_Slash_{CID}_3
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
normalizedTime: 0.14299999
normalizedTime: 0.14
stringParameter:
intParameter: 0
floatParameter: 0.2
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.203
normalizedTime: 0.25
stringParameter: Projectile_{CID}
intParameter: 0
floatParameter: 0
@ -775,9 +775,9 @@ MonoBehaviour:
enabled: 1
states:
- stateName: attack
sourceFbxPath: Assets/WL/Combat/Anim/FR/FR_Bow0.anim
subClipName: FR_Bow1_{CID}
sourceClipName:
sourceFbxPath: Assets/ExplosiveLLC/Archer Warrior Mecanim Animation Pack/Animations/Archer@RangeAttack1.FBX
subClipName: BowShot1_S_{CID}
sourceClipName:
incomingExitTime: 0
createIfMissing: 0
firstFrame: -1
@ -788,20 +788,20 @@ MonoBehaviour:
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.92
normalizedTime: 0.72
stringParameter: Projectile_{CID}
intParameter: 0
floatParameter: 0
- stateName: Bow_Attack2
sourceFbxPath: Assets/WL/Combat/Anim/FR/FR_Bow0.anim
subClipName: FR_Bow2_{CID}
sourceClipName:
sourceFbxPath: Assets/ExplosiveLLC/Archer Warrior Mecanim Animation Pack/Animations/Archer@RangeAttack1.FBX
subClipName: BowShot2_S_{CID}
sourceClipName:
incomingExitTime: 0.98
createIfMissing: 0
firstFrame: -1
@ -812,13 +812,13 @@ MonoBehaviour:
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.92
normalizedTime: 0.72
stringParameter: Projectile_{CID}
intParameter: 0
floatParameter: 0
@ -860,9 +860,9 @@ MonoBehaviour:
enabled: 1
states:
- stateName: attack
sourceFbxPath: Assets/WL/Combat/Anim/FR/FR_Bow0.anim
subClipName: FR_Bow1_{CID}
sourceClipName:
sourceFbxPath: Assets/ExplosiveLLC/Archer Warrior Mecanim Animation Pack/Animations/Archer@RangeAttack1.FBX
subClipName: BowShot1_S_{CID}
sourceClipName:
incomingExitTime: 0
createIfMissing: 0
firstFrame: -1
@ -873,20 +873,20 @@ MonoBehaviour:
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.92
normalizedTime: 0.72
stringParameter: Projectile_{CID}
intParameter: 0
floatParameter: 0
- stateName: Bow_Attack2
sourceFbxPath: Assets/WL/Combat/Anim/FR/FR_Bow0.anim
subClipName: FR_Bow2_{CID}
sourceClipName:
sourceFbxPath: Assets/ExplosiveLLC/Archer Warrior Mecanim Animation Pack/Animations/Archer@RangeAttack1.FBX
subClipName: BowShot2_S_{CID}
sourceClipName:
incomingExitTime: 0.98
createIfMissing: 0
firstFrame: -1
@ -897,13 +897,13 @@ MonoBehaviour:
time: 0
useNormalized: 1
normalizedTime: 0
stringParameter:
stringParameter:
intParameter: 0
floatParameter: 0
- functionName: Projectile
time: 0
useNormalized: 1
normalizedTime: 0.92
normalizedTime: 0.72
stringParameter: Projectile_{CID}
intParameter: 0
floatParameter: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c30aed3bcd63fbf4cb1ef953b048620d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,106 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: WL_Mat_Fx_DaggerMulti_Shiny
m_Shader: {fileID: 211, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHABLEND_ON
m_InvalidKeywords: []
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- GRABPASS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: d7bdd1a257792d64e945309f1335af1b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMode: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 10
- _EmissionEnabled: 0
- _FlipbookMode: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _LightingEnabled: 0
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 1.3, g: 1.3, b: 1.3, a: 1}
- _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8e6beb30aa09dd749a99d0840ae4d461
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,106 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: WL_Mat_Fx_DaggerMulti_Slash
m_Shader: {fileID: 211, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHABLEND_ON
m_InvalidKeywords: []
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- GRABPASS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: db8918f74a0e0364ab3b43f13a6acda0, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMode: 0
- _Cull: 0
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 10
- _EmissionEnabled: 0
- _FlipbookMode: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _LightingEnabled: 0
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 1.3, g: 1.3, b: 1.3, a: 1}
- _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bf638850d6c4d8342b4b030c82944736
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,106 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: WL_Mat_Fx_DaggerMulti_Slash_turn
m_Shader: {fileID: 211, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHABLEND_ON
m_InvalidKeywords: []
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- GRABPASS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: 3e2f732e64ac3294590ad63c172d62f9, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMode: 0
- _Cull: 0
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 10
- _EmissionEnabled: 0
- _FlipbookMode: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _LightingEnabled: 0
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 1.3, g: 1.3, b: 1.3, a: 1}
- _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 57549874941670b4aadfdbda77559b5c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,106 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: WL_Mat_Impact_DaggerSpin_Slash
m_Shader: {fileID: 211, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHABLEND_ON
m_InvalidKeywords: []
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- GRABPASS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: db8918f74a0e0364ab3b43f13a6acda0, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMode: 0
- _Cull: 0
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 10
- _EmissionEnabled: 0
- _FlipbookMode: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _LightingEnabled: 0
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 1.3, g: 1.3, b: 1.3, a: 1}
- _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0ae488554cc8afe409cd895ce2a3118a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,106 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: WL_Mat_Impact_DaggerSpin_Stars
m_Shader: {fileID: 211, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHABLEND_ON
m_InvalidKeywords: []
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- GRABPASS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 2800000, guid: d7bdd1a257792d64e945309f1335af1b, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMode: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 10
- _EmissionEnabled: 0
- _FlipbookMode: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _LightingEnabled: 0
- _Metallic: 0
- _Mode: 2
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 1.3, g: 1.3, b: 1.3, a: 1}
- _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 578bab4c627533c4987386b81e4a2e04
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -105,21 +105,22 @@
{
"classIds": [ 10202 ],
"stages": [ 3 ],
"prefab": "WL_Impact_DaggerSlash3",
"scale": 1.0,
"euler": [ 0, 0, 90 ],
"yOffset": 0.0,
"prefab": "WL_Impact_DaggerSpin",
"scale": 1.75,
"euler": [ 0, 0, 0 ],
"yOffset": -0.2,
"calibrated": false,
"follow": true,
"forward": 0.0,
"side": 0.0,
"life": 0.8,
"life": 0.9,
"minInterval": 0.3,
"alignWeapon": true,
"alignWeapon": false,
"alignFraction": 0.3,
"massLocal": [ 0, 0.5, 0 ],
"massLocal": [ 0, 0, 0 ],
"fixedDir": false,
"lockFacing": false,
"_note_954": "#954 PD 「비수 3타 이펙트가 기존과 다른 컨셉 → Slash Effects FREE 의 회전 이펙트(스크린샷)로」 — 사본 WL_Impact_DaggerSpin(= Shiny Slash · 편집 모드 대조표 954_fx_sheet: 큰 초승달 + 반짝이 · 위에서 보면 수평 고리(954_fx_orient) · 시작색 teal (0.38,0.84,0.83)) · PC 중심에 따라붙음(alignWeapon 끔 · 수평 고리라 euler 0) · 배율 0.95(실제 0.95×0.55×1.16 ≈ 0.6 · 고리 반지름 약 0.8 m 추정) · 이전 DaggerSlash3 규칙(euler Z 90 · massLocal 0.5)은 #952 기록",
"_note_951": "#951 PD 「비수 3타 이펙트가 공격한 검 위치를 기준으로 호 형태로 펼쳐지도록」 — 원본 Effect_Slash_10202_3 의 WL 사본을 매 프레임 무기(손잡이 → 날 끝) 방향·위치에 맞춰 따라가게(창 2타 alignWeapon 과 같은 방식) · 수치는 Play 실측 뒤 조정",
"_note_952": "#952 PD 「이펙트 위치가 실제 검 위치와 너무 동떨어져 있고 크기가 너무 작아 어색」 — 편집 모드 실측(952_slash.cs): 보이는 호 = HighPolySwordRing 메시 입자(지름 1.98 × 크기 2.92 × 0.5 = 프리팹 단위 2.9 m 고리 · 중심 로컬 (0, 0.5, 0))가 Z 85° 로 기울어 세로 평면(YZ)에 서 있어 위 카메라에서는 모서리(두께 0.43)만 보이고 주변 별 입자만 보였다 → euler Z 90 으로 고리를 수평(XZ)으로 눕히고 massLocal 로 고리 중심을 손잡이 앞 alignFraction 자리에 맞춤(그 전 = 고리 중심이 피벗 위 0.5 × 배율 · 별이 피벗에서 1 m 밖). 배율은 1.0(실제 0.637 = 0.55 × 1.16) 그대로 두고 PD 판정"
},

View File

@ -84,6 +84,8 @@ namespace WL.Combat.Impact
public static WLImpactSettings S { get { if (!s_loaded) Load(); return s_settings; } }
public static bool Enabled { get { var s = S; return s != null && s.enabled; } }
public static void Reload() { s_loaded = false; ClearPool(); }
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void ResetForPlay() { Reload(); } // #954 도메인 리로드 끔 대비 — Play 마다 WLImpactFx.json 을 다시 읽는다(실측: swingFx 배율 변경이 다음 Play 에 안 먹었다)
static void Load()
{
s_loaded = true;

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -42,18 +42,25 @@
"jumpForward": 0.4,
"jumpSeconds": 0.25,
"landState": "ghost_land",
"landHeight": 1.2,
"landFallSeconds": 0.25,
"slideDistance": 0.4,
"slideSeconds": 0.35,
"landTotalSeconds": 1.0,
"landHeight": 0.5,
"landFallSeconds": 0.15,
"slideDistance": 0.3,
"slideSeconds": 0.25,
"landTotalSeconds": 0.45,
"landAtSeconds": 3.4,
"airClip": "Skill8_Air",
"landGhosts": 2,
"landGhosts": 0,
"dustPrefab": "WL/Fx/WL_Fx_LandDust",
"dustScale": 0.15,
"keepCamera": 1,
"fallForward": 0.35,
"fallForward": 0.2,
"landPose": "ghost_land@0.25",
"landHideModel": 1,
"landGhostColor": [ 0.55, 0.95, 0.85, 0.45 ],
"landGhostHold": 0.02,
"landGhostFade": 0.08,
"popGhosts": 2,
"_note_954": "#954 PD 「각성 뒤 너무 높은 위치에서 튀어나옴 → 0.5 m 정도 낮은 높이에서 반투명 상태로 갑자기 이펙트와 함께 튀어나오며 랜딩 · 랜딩 시간 짧게 · 랜딩 중 공격 불가」 — 높이 1.2 → 0.5 · 낙하 0.25 → 0.15 s · 전체 1.0 → 0.45 s · 미끄러짐 0.4/0.35 → 0.3/0.25 · 낙하 중 실제 모델 숨김 + 착지 자세(ghost_land@0.25)의 반투명 teal 캐릭터를 매 프레임(유지 0.02 · 소멸 0.08) · 착지 순간 모델 보임 + 잔상 2 + 먼지 · 공격 금지 = IsLanding(하네스 공격 키) + IsStop(자동 전투)",
"_note_953": "#953 PD 「비수 공격 시 카메라 각도가 달라짐 — 바꾸지 말고 현재 상태 유지한 채 착지(탑뷰가 아니라 대각선에서 미끄러지며 낙하하듯)」 — 원인 = 원본 Skill_DarkAmbush 가 시전 때 RealCamera.Set_TopView(PC) · 2.0 s 뒤 해제 → keepCamera 1 로 둘 다 건너뜀(원본 훅 2줄) · fallForward 0.35 m = 낙하 0.25 s 동안 앞으로(대각선) → 착지 뒤 slide 0.4 m 감속 · 값은 PM 추정(원장 40)",
"_note_952": "#952 PD 「이펙트가 끝나는 시점에 즉시 착지(서 있는 모습 없이) · 떨어진 후 미끄러지듯 살짝 전진하다 멈춤 · 흙먼지는 캐릭터 등신에 맞게」 — 착지 시작 = 원본이 모델을 다시 켜는 그 프레임(WLGhostStrike.LateTick · 그 프레임은 숨김 · 섞임 0) · 미끄러짐 = 감속(2D/T → 0 · 0.4 m / 0.35 s) · 먼지 = HCFX Dust_Dash 사본의 긴 줄기(3D 크기 1.7 × 5.0 × lengthScale 1 = 프리팹 단위 5 m) × 0.15 ≈ 0.75 m(PC 키 1.13 m 실측 · Bounds952.Model)",
"_note_951": "#951 PD 「각성 시전 시 뛰어오르는 잔상 → 사라진 채 공격 → 잔상과 함께 등장 · 낮은 공중에서 떨어져 착지 포즈 · 0.5 m 미끄러지다 정지 · 흙먼지」 — 시전 순간 위·앞으로 잔상 jumpGhosts 개(jumpSeconds 동안) · PC 가 다시 보이는 순간(또는 landAtSeconds) 모델을 landHeight 에서 landFallSeconds 에 내리며 잔상 landGhosts · 착지 클립 landState(어새신 컨트롤러 ghost_land = Platform Sub_HeroLanding 0~36) · slideSeconds 동안 NavMeshAgent.Move 로 slideDistance 앞으로 · 착지 때 dustPrefab(Hyper Casual Dust_Dash 사본) · landTotalSeconds 뒤 idle",

View File

@ -4,5 +4,13 @@
"freezeAnim": 0,
"slashScale": 0.5,
"smokeScale": 0.5,
"keepHitBox": 1
"keepHitBox": 1,
"fxPrefab": "WL/Fx/WL_Fx_DaggerMulti",
"fxScale": 0.85,
"fxDelay": 0.5,
"fxForward": 1.2,
"fxYOffset": 0.1,
"fxLife": 2.5,
"hideOriginalFx": 1,
"_note_954": "#954 PD 「비수 주력 = Slash Effects FREE 의 녹색 난사(스크린샷)로」 — 사본 WL_Fx_DaggerMulti(= Multiple Slash 2 · 초승달 2개가 시차로 · 시작색 teal) · 원본 베기(go_effect · 판정 상자 그대로) 렌더러 끔 · 원본이 베기를 켜는 0.5 s 에 PC 정면 1.2 m · 높이 +0.1 · 배율 0.6 · 2.5 s 뒤 파괴 · 연기(smoke)는 그대로"
}

View File

@ -51,6 +51,12 @@ namespace WL.Combat.Weapon
public string dustPrefab = ""; public float dustScale = 1f;
public int keepCamera = 0; // #953 1 = 원본 Skill_DarkAmbush 의 탑뷰 전환(RealCamera.Set_TopView)을 건너뛴다 — 카메라 각도 유지
public float fallForward = 0f; // #953 낙하하는 동안 앞으로 가는 거리(m · 대각선으로 미끄러지며 낙하) · 착지 뒤 미끄러짐(slideDistance)은 별도
// #954 PD 「0.5 m 정도 짧은 높이에서 반투명 상태로 갑자기 이펙트와 함께 튀어나오며 랜딩 · 랜딩 시간 짧게 · 랜딩 중 공격 불가」
public string landPose = ""; // 착지 자세("상태@정규화 시각") — 떨어지는 동안 반투명 캐릭터(잔상 재질)로 그리고 실제 모델은 숨긴다(landHideModel)
public int landHideModel = 0; // 1 = 떨어지는 동안 실제 모델 숨김 → 착지 순간 보임(튀어나옴)
public float[] landGhostColor; // 떨어지는 반투명 캐릭터 색(r,g,b,a) · 비우면 잔상 색
public float landGhostHold = 0.02f, landGhostFade = 0.08f; // 매 프레임 띄우는 반투명 캐릭터의 유지·소멸(초)
public int popGhosts = 0; // 착지 순간 착지 자세로 터뜨리는 잔상 수(잔상 색 · 기본 유지·소멸)
public string poseSource = "clips"; // clips = 숨은 꼭두각시에 poses 를 걸어 굽기 · live = 시전 순간 PC 자세 1 개
public string[] poses = new string[0]; // "애니메이터 상태 이름@정규화 시각" — 차례로 돌려 쓴다(시작은 무작위)
}
@ -95,7 +101,7 @@ namespace WL.Combat.Weapon
public float t0, groundY; public List<FxPoint> fx; public int next, poseCursor;
public Vector3 lastPos; public bool hasLast, posesReady; public string sig = "";
// #951 도약 잔상 · 착지
public int jumpDone; public float jumpNext = -1f; public bool wasHidden, sawAir, landing, landed, dustDone; public float landT0, modelBaseY, modelY = float.NaN; public int landGhostsDone, hideUntilFrame;
public int jumpDone; public float jumpNext = -1f; public bool wasHidden, sawAir, landing, landed, dustDone, hideDuringFall; public float landT0, modelBaseY, modelY = float.NaN; public int landGhostsDone, hideUntilFrame;
public Vector3 landPos, landFwd; public Transform model; public UnityEngine.AI.NavMeshAgent agent; public object stopWas;
public readonly List<SkinnedMeshRenderer> smrs = new List<SkinnedMeshRenderer>();
public readonly List<MeshFilter> weapons = new List<MeshFilter>();
@ -111,6 +117,7 @@ namespace WL.Combat.Weapon
public readonly List<MeshFilter> exF = new List<MeshFilter>(); public readonly List<MeshRenderer> exR = new List<MeshRenderer>();
public readonly List<bool> exSingle = new List<bool>();
public readonly MaterialPropertyBlock mpb = new MaterialPropertyBlock(); public float t0; public bool busy, pre;
public float[] color; public float hold = -1f, fade = -1f; // #954 잔상별 색·수명 덮기(착지 중 반투명 캐릭터)
}
static WLGhostStrikeJson s_cfg;
@ -254,16 +261,18 @@ namespace WL.Combat.Weapon
{
var g = s_pool[i];
if (!g.busy || g.root == null) continue;
float t = now - g.t0;
if (t >= c.hold + c.fade) { g.busy = false; g.root.SetActive(false); continue; }
SetAlpha(g, t <= c.hold ? 1f : 1f - (t - c.hold) / Mathf.Max(0.01f, c.fade));
float t = now - g.t0; float hold = g.hold >= 0f ? g.hold : c.hold, fade = g.fade >= 0f ? g.fade : c.fade;
if (t >= hold + fade) { g.busy = false; g.root.SetActive(false); g.color = null; g.hold = g.fade = -1f; continue; }
SetAlpha(g, t <= hold ? 1f : 1f - (t - hold) / Mathf.Max(0.01f, fade));
}
}
catch (System.Exception ex) { Errors++; LastLog = "틱 실패 — " + ex.Message; }
}
// ───────────────────────────────────────── #951 도약 잔상 · 착지 연출
public static int JumpSpawned, Landings; public static string LandLog = "";
public static int JumpSpawned, Landings, LandGhostFrames; public static string LandLog = "";
/// <summary>#954 「랜딩 중 공격할 수 없어야」 — 이 시전자가 착지 연출 중인가(자동 전투는 IsStop 으로 이미 멈춤 · 수동 공격 키는 이걸로 막는다).</summary>
public static bool IsLanding(Actor a) { var cast = s_cast; return cast != null && cast.landing && a != null && ReferenceEquals(cast.shooter, a); }
static System.Reflection.PropertyInfo s_isStop;
static string CurrentClip(Actor a)
@ -295,7 +304,7 @@ namespace WL.Combat.Weapon
LandLog += reappeared ? " · 보이는 순간" : airEnded ? " · 공중 클립 끝" : " · 시각";
}
}
if (cast.landing && cast.hideUntilFrame > 0 && Time.frameCount >= cast.hideUntilFrame) { cast.hideUntilFrame = 0; SetVisible(cast, true); }
if (cast.landing && cast.hideUntilFrame > 0 && Time.frameCount >= cast.hideUntilFrame) { cast.hideUntilFrame = 0; if (!cast.hideDuringFall) SetVisible(cast, true); } // #954 landHideModel 이면 착지 순간까지 숨긴 채
if (!cast.landing || cast.model == null || float.IsNaN(cast.modelY)) return;
var lp = cast.model.localPosition; cast.model.localPosition = new Vector3(lp.x, cast.modelY, lp.z);
}
@ -316,7 +325,7 @@ namespace WL.Combat.Weapon
if (cast.model != null) { var lp = cast.model.localPosition; cast.model.localPosition = new Vector3(lp.x, cast.modelBaseY, lp.z); }
SetVisible(cast, true); SetStop(a, cast.stopWas);
}
cast.landing = false; cast.landed = true; cast.modelY = float.NaN; cast.hideUntilFrame = 0; s_cast = null; LandLog += " · 취소(직업 전환)";
cast.landing = false; cast.landed = true; cast.modelY = float.NaN; cast.hideUntilFrame = 0; cast.hideDuringFall = false; s_cast = null; LandLog += " · 취소(직업 전환)";
}
static bool IsHidden(Cast cast)
@ -338,7 +347,7 @@ namespace WL.Combat.Weapon
static void StartLanding(Cast cast, float now)
{
var pc = cast.shooter as PCActor; var r = cast.rule;
cast.landing = true; cast.landT0 = now; cast.landGhostsDone = 0; cast.dustDone = false;
cast.landing = true; cast.landT0 = now; cast.landGhostsDone = 0; cast.dustDone = false; cast.hideDuringFall = r.landHideModel != 0 && s_landPose != null; // #954 착지 자세를 구웠을 때만 실제 모델을 숨긴다
cast.landPos = cast.shooter.Get_position(); cast.landFwd = cast.shooter.transform.forward; cast.landFwd.y = 0f; if (cast.landFwd.sqrMagnitude < 1e-4f) cast.landFwd = Vector3.forward; cast.landFwd.Normalize();
cast.model = cast.shooter.m_animation != null ? cast.shooter.m_animation.transform : null; cast.modelBaseY = cast.model != null ? cast.model.localPosition.y : 0f;
cast.agent = cast.shooter.GetComponent<UnityEngine.AI.NavMeshAgent>();
@ -357,6 +366,7 @@ namespace WL.Combat.Weapon
float k = 1f - t / fall; float y = r.landHeight * k * k; // 가속 낙하(실제 적용은 LateTick)
cast.modelY = cast.modelBaseY + y;
if (cast.landGhostsDone < r.landGhosts && t >= fall * (cast.landGhostsDone + 1f) / (r.landGhosts + 1f)) { cast.landGhostsDone++; if (Spawn(c, cast, cast.landPos + Vector3.up * y, cast.landFwd)) JumpSpawned++; }
if (cast.hideDuringFall && s_landPose != null) { if (Spawn(c, cast, cast.shooter.Get_position() + Vector3.up * y, cast.landFwd, s_landPose, r.landGhostColor, r.landGhostHold, r.landGhostFade)) LandGhostFrames++; } // #954 떨어지는 동안 = 반투명 캐릭터(매 프레임)
if (r.fallForward > 0f) // #953 대각선 낙하 — 떨어지는 동안 앞으로 fallForward(등속) · 착지 뒤엔 slide 감속
{
float step = r.fallForward * Time.deltaTime / fall;
@ -368,6 +378,8 @@ namespace WL.Combat.Weapon
if (!cast.dustDone)
{
cast.dustDone = true;
if (cast.hideDuringFall) { cast.hideDuringFall = false; SetVisible(cast, true); } // #954 착지 순간 실제 모델이 튀어나온다
if (r.popGhosts > 0 && s_landPose != null) for (int i = 0; i < r.popGhosts; i++) { var jitter = Quaternion.Euler(0f, (i - (r.popGhosts - 1) * 0.5f) * 18f, 0f) * cast.landFwd; if (Spawn(c, cast, cast.shooter.Get_position() + jitter * 0.12f * (i + 1), jitter, s_landPose)) JumpSpawned++; }
if (!string.IsNullOrEmpty(r.dustPrefab))
{
var p = Resources.Load<GameObject>(r.dustPrefab);
@ -545,6 +557,15 @@ namespace WL.Combat.Weapon
var pose = BakePose(gt, smrs, weapons);
if (pose != null) { s_poses.Add(pose); PosesBaked++; }
}
// #954 착지 자세 1 개(순환 목록 밖) — 떨어지는 동안의 반투명 캐릭터 · 착지 순간 튀어나오는 잔상
if (s_landPose != null && s_landPose.body != null) Object.Destroy(s_landPose.body);
s_landPose = null;
if (!string.IsNullOrEmpty(cast.rule.landPose))
{
string ls; float lnt;
if (ParsePose(cast.rule.landPose, out ls, out lnt) && an.HasState(0, Animator.StringToHash(ls))) { an.Play(Animator.StringToHash(ls), 0, lnt); an.Update(0f); s_landPose = BakePose(gt, smrs, weapons); }
else LastLog = "착지 자세 상태 없음 " + cast.rule.landPose;
}
PuppetBuilt++;
return s_poses.Count > 0;
}
@ -623,12 +644,14 @@ namespace WL.Combat.Weapon
static Transform Find(Transform root, string path) { return string.IsNullOrEmpty(path) ? root : root.Find(path); }
// ───────────────────────────────────────── 고스트 · 재질
static bool Spawn(WLGhostStrikeJson c, Cast cast, Vector3 pos, Vector3 face)
static Pose s_landPose; // #954 착지 자세(규칙 landPose) — 반투명 캐릭터 · 튀어나오는 잔상용(순환 목록 밖)
static bool Spawn(WLGhostStrikeJson c, Cast cast, Vector3 pos, Vector3 face, Pose poseOverride = null, float[] color = null, float hold = -1f, float fade = -1f)
{
if (s_poses.Count == 0 || !EnsureMaterial(c)) return false;
if ((s_poses.Count == 0 && poseOverride == null) || !EnsureMaterial(c)) return false;
var g = Rent(c);
if (g == null) { SkippedCap++; return false; }
var pose = s_poses[(cast.poseCursor++ & 0x7fffffff) % s_poses.Count];
var pose = poseOverride ?? s_poses[(cast.poseCursor++ & 0x7fffffff) % s_poses.Count];
g.color = color; g.hold = hold; g.fade = fade;
g.pre = s_matsPre != null;
g.bodyF.sharedMesh = pose.body;
g.bodyR.sharedMaterials = g.pre ? s_matsPre : s_matsOne;
@ -679,7 +702,7 @@ namespace WL.Combat.Weapon
static void SetAlpha(Ghost g, float k)
{
var a = Cfg.color;
var a = g.color != null && g.color.Length >= 4 ? g.color : Cfg.color; // #954 잔상별 색 덮기
var col = a != null && a.Length >= 4 ? new Color(a[0], a[1], a[2], a[3]) : Color.black;
col.a *= Mathf.Clamp01(k);
g.mpb.Clear();

View File

@ -30,6 +30,10 @@ namespace WL.Combat.Weapon
public float slashScale = 1f; // 베기(go_effect) 보이는 크기 배율
public float smokeScale = 1f; // 연기(go_invisibleEffect) 크기 배율
public int keepHitBox = 1; // 1 = 베기 판정 상자 월드 크기 유지(보이는 크기만 바꿈)
// #954 PD 「비수 주력 = Slash Effects FREE 의 녹색 난사(Multiple Slash 2)로」 — 원본 베기 렌더러를 끄고(판정 상자 그대로) WL 사본을 같은 자리·시각에 띄운다
public string fxPrefab = ""; // Resources 경로(비우면 원본 베기 그대로)
public float fxScale = 1f, fxDelay = 0.5f, fxForward = 1.5f, fxYOffset = 0f, fxLife = 2.5f; // 배율 · 시전 뒤 시각(원본 go_effect 0.5 s) · PC 정면 거리(원본 1.5) · 높이 · 수명
public int hideOriginalFx = 0; // 1 = 원본 베기(go_effect) 렌더러 끔
}
public static class WLShadowSlash
@ -78,11 +82,32 @@ namespace WL.Combat.Weapon
}
if (skill.go_effect != null) Scale(skill.go_effect.transform, c.slashScale, c.keepHitBox != 0);
if (skill.go_invisibleEffect != null) Scale(skill.go_invisibleEffect.transform, c.smokeScale, false);
if (!string.IsNullOrEmpty(c.fxPrefab) && !DSUtil.CheckNull(shooter)) // #954
{
if (c.hideOriginalFx != 0 && skill.go_effect != null) foreach (var rd in skill.go_effect.GetComponentsInChildren<Renderer>(true)) rd.enabled = false; // 풀 인스턴스라 한 번 끄면 유지
Runner.StartCoroutine(CoFx(shooter, c));
}
LastLog = "cast " + Casts + " · shown " + Shown + " · scaled " + Scaled;
}
catch (System.Exception ex) { Errors++; LastLog = "실패 — " + ex.Message; }
}
public static int FxShown;
static WLShadowSlashRunner s_runner;
static WLShadowSlashRunner Runner { get { if (s_runner == null) { var go = new GameObject("[WL954] ShadowSlashFx"); go.hideFlags = HideFlags.HideAndDontSave; Object.DontDestroyOnLoad(go); s_runner = go.AddComponent<WLShadowSlashRunner>(); } return s_runner; } }
/// <summary>#954 원본 베기가 켜지는 시각(fxDelay)에 WL 사본(녹색 난사)을 PC 정면 fxForward 에 띄운다(PC 방향 · fxLife 뒤 파괴).</summary>
static System.Collections.IEnumerator CoFx(Actor shooter, WLShadowSlashJson c)
{
if (c.fxDelay > 0f) yield return new WaitForSeconds(c.fxDelay);
if (DSUtil.CheckNull(shooter) || shooter.IsDead()) yield break;
var p = Resources.Load<GameObject>(c.fxPrefab); if (p == null) { LastLog = "fx 프리팹 없음 " + c.fxPrefab; yield break; }
var fwd = shooter.transform.forward; fwd.y = 0f; if (fwd.sqrMagnitude < 1e-4f) fwd = Vector3.forward; fwd.Normalize();
var pos = shooter.Get_CenterPositionFoward(c.fxForward) + Vector3.up * c.fxYOffset;
var go = Object.Instantiate(p, pos, Quaternion.LookRotation(fwd, Vector3.up)); go.transform.localScale = p.transform.localScale * c.fxScale;
foreach (var ps in go.GetComponentsInChildren<ParticleSystem>(true)) { var m = ps.main; m.scalingMode = ParticleSystemScalingMode.Hierarchy; ps.Play(true); }
Object.Destroy(go, Mathf.Max(0.5f, c.fxLife)); FxShown++; LastLog = "fx " + c.fxPrefab + " @" + pos.ToString("F2") + " ×" + c.fxScale;
}
/// <summary>Actor 의 protected 켜기 함수(Model_OnOff · Weapon_OnOff(bool))를 true 로 부른다 — 원본 Co_Invisible 끝과 같은 호출(가상 함수는 PCActor 쪽이 불린다).</summary>
static bool Call(ref MethodInfo m, string name, Actor a)
{
@ -118,4 +143,6 @@ namespace WL.Combat.Weapon
/// <summary>#943-⑧ 이 Transform(원본 스킬 풀 인스턴스)의 처음 크기 · 판정 상자 — 배율 누적 방지.</summary>
public sealed class WLShadowSlashBase : MonoBehaviour { public Vector3 scale, size, center; public bool hasBox; }
/// <summary>#954 코루틴 숙주(씬 밖 · 숨김).</summary>
public sealed class WLShadowSlashRunner : MonoBehaviour { }
}

View File

@ -142,8 +142,8 @@ MonoBehaviour:
- classId: 10202
mode: 0
overrideLook: 0
colorAdditive: {r: 2.024, g: 0.9, b: 0.15, a: 1}
colorAlpha: {r: 1.582, g: 0.52, b: 0.05, a: 1}
colorAdditive: {r: 0.2, g: 1.35, b: 1.0, a: 1}
colorAlpha: {r: 0.1, g: 0.95, b: 0.7, a: 1}
widthScale: 1
overrideWeaponSlots: 0
weaponSlotIndices:

View File

@ -458,7 +458,7 @@ namespace WL.SkillTest
float half = cfg.groundSize * 0.5f - 3f; var pp = pc.Get_position();
if (Mathf.Abs(pp.x) > half || Mathf.Abs(pp.z) > half) { pc.Set_Warp(NavPos(V3(cfg.spawnPos))); _msg = "평지 가장자리 — PC·더미 원점 " + ResetDummy(); }
if (Input.GetKeyDown(_kAttack)) { if (Dummy != null) pc.Change_Target(false, Dummy); pc.Play_Attack(0, 1f); _msg = "기본 공격"; }
if (Input.GetKeyDown(_kAttack)) { if (WL.Combat.Weapon.WLGhostStrike.IsLanding(pc)) _msg = "착지 중 — 공격 불가"; else { if (Dummy != null) pc.Change_Target(false, Dummy); pc.Play_Attack(0, 1f); _msg = "기본 공격"; } } // #954 랜딩 중 공격 금지
if (Input.GetKeyDown(_kPrev)) _msg = CycleWeapon(-1);
if (Input.GetKeyDown(_kNext)) _msg = CycleWeapon(+1);
if (Input.GetKeyDown(_kReset)) _msg = ResetDummy();