From f2054e17d791c7a03f31f296f60079477d43633e Mon Sep 17 00:00:00 2001 From: swrring Date: Wed, 21 Oct 2026 10:28:52 +0900 Subject: [PATCH] =?UTF-8?q?WL=20#955=20PD=20=EC=A7=80=EC=8B=9C=206?= =?UTF-8?q?=EA=B1=B4(=EB=B9=84=EC=88=98)=20=E2=80=94=20=E2=91=A0=20?= =?UTF-8?q?=EC=A3=BC=EB=A0=A5=20=3D=20=EC=A0=9C=EC=9E=90=EB=A6=AC=20?= =?UTF-8?q?=EB=82=9C=EC=82=AC(WLShadowSlash=20slashStates=201=C2=B72?= =?UTF-8?q?=ED=83=80=200.28=20s=20=EA=B5=90=EB=8C=80=20=C2=B7=20=EB=B0=B0?= =?UTF-8?q?=EC=86=8D=201.8=20=C2=B7=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=81=94=20=C2=B7=20=EC=9B=90=EB=B3=B8=20Jump=20=EC=82=AC?= =?UTF-8?q?=EC=8A=AC=20=EB=8C=80=EC=B2=B4)=20=E2=91=A1=203=ED=83=80=20=3D?= =?UTF-8?q?=20Paladin=20skill=5Fspinslash=20=ED=81=B4=EB=A6=BD=20+=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=ED=9A=8C=EC=A0=84=20360=C2=B0/0.9=20s(?= =?UTF-8?q?=EB=AA=A8=EB=8D=B8=20=EC=9E=90=EC=8B=9D)=20+=20=EC=9B=90?= =?UTF-8?q?=EB=B3=B8=20Skill=5FSpinSlash=20=EC=82=AC=EB=B3=B8=20WL=5FImpac?= =?UTF-8?q?t=5FDaggerWhirl(=EB=85=B9=EC=83=89=20tint=20=C2=B7=20=EB=A6=AC?= =?UTF-8?q?=EC=B9=98=20=ED=81=AC=EA=B8=B0)=20=E2=91=A2=20=EA=B0=81?= =?UTF-8?q?=EC=84=B1=20=EB=93=B1=EC=9E=A5=20=3D=20=EB=86=92=EC=9D=B4=200.2?= =?UTF-8?q?=20=C2=B7=20=EB=82=99=ED=95=98=200.06=20s=20=C2=B7=20=EC=A0=84?= =?UTF-8?q?=EC=A7=84=20=EB=AF=B8=EB=81=84=EB=9F=AC=EC=A7=90=200.45=20m=20?= =?UTF-8?q?=E2=91=A3=204=ED=83=80=20=EC=9D=B4=ED=8E=99=ED=8A=B8=20=3D=20Sh?= =?UTF-8?q?iny=20=EC=82=AC=EB=B3=B8=EC=9D=84=20=EB=82=A0=20=EB=B0=A9?= =?UTF-8?q?=ED=96=A5=C2=B7=EC=9C=84=EC=B9=98=EC=97=90=20=EC=9E=91=EA=B2=8C?= =?UTF-8?q?=20=E2=91=A4=204=ED=83=80=20=EC=B9=B4=EB=A9=94=EB=9D=BC=20=3D?= =?UTF-8?q?=200.7=20s=20=ED=9A=8C=EC=A0=84=C2=B7=EC=98=A4=ED=94=84?= =?UTF-8?q?=EC=85=8B=20=EA=B3=A0=EC=A0=95=20+=200.6=20m=20=EC=A4=8C?= =?UTF-8?q?=EC=95=84=EC=9B=83=20=EB=B3=B5=EA=B7=80(WLCamHold)=20=E2=91=A5?= =?UTF-8?q?=204=ED=83=80=20=3D=200.5=20m=20=EC=88=9C=EA=B0=84=EC=9D=B4?= =?UTF-8?q?=EB=8F=99(WLSwingExtras=20=C2=B7=20NavMesh=20=EC=9B=8C=ED=94=84?= =?UTF-8?q?)=20+=20=EC=9E=94=EC=83=81(WLGhostStrike.BlinkGhosts=20=C2=B7?= =?UTF-8?q?=20=EC=88=98=20=EB=B6=88=EC=95=88=EC=A0=95=20=EB=AF=B8=ED=99=95?= =?UTF-8?q?=EC=9D=B8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5.1 --- .../Paladin/skill_spinslash.FBX.meta | 65 ++- .../Animations/pcanim_assassin.controller | 4 +- Assets/WL/Combat/CombatAnimMapping.asset | 10 +- ...t_Impact_DaggerWhirl_FX_Whirling_Sword.mat | 111 +++++ ...act_DaggerWhirl_FX_Whirling_Sword.mat.meta | 8 + ...L_Mat_Impact_DaggerWhirl_alpha_point_8.mat | 61 +++ ..._Impact_DaggerWhirl_alpha_point_8.mat.meta | 8 + .../WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat | 62 +++ ..._Mat_Impact_DaggerWhirl_eye_lwy_6.mat.meta | 8 + .../Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat | 111 +++++ .../WL_Mat_Impact_DaggerWhirl_pd_65.mat.meta | 8 + .../WL/Impact/WL_Impact_DaggerWhirl.prefab | 418 ++++++++++++++++++ .../Impact/WL_Impact_DaggerWhirl.prefab.meta | 7 + .../Impact/Resources/WL/WLImpactFx.json | 36 +- Assets/WL/Combat/Impact/WLImpactFx.cs | 59 +++ .../Weapon/Resources/WL/WLGhostStrike.json | 17 +- .../Weapon/Resources/WL/WLShadowSlash.json | 5 + Assets/WL/Combat/Weapon/WLGhostStrike.cs | 19 + Assets/WL/Combat/Weapon/WLShadowSlash.cs | 26 ++ 19 files changed, 1021 insertions(+), 22 deletions(-) create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat.meta create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat.meta create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat.meta create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat.meta create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab create mode 100644 Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab.meta diff --git a/Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX.meta b/Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX.meta index e48cbd4fb..f528c1ea5 100644 --- a/Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX.meta +++ b/Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 34e3b510c7557a34e9575335e96d0d13 ModelImporter: - serializedVersion: 22200 + serializedVersion: 24300 internalIDToNameTable: - first: 74: 1827226128182048838 @@ -12,6 +12,7 @@ ModelImporter: materialName: 0 materialSearch: 1 materialLocation: 1 + searchTexturesGlobally: 1 animations: legacyGenerateAnimations: 4 bakeSimulation: 0 @@ -19,8 +20,6 @@ ModelImporter: optimizeGameObjects: 0 removeConstantScaleCurves: 0 motionNodeName: - rigImportErrors: - rigImportWarnings: animationImportErrors: animationImportWarnings: animationRetargetingWarnings: @@ -71,6 +70,63 @@ ModelImporter: maskType: 3 maskSource: {instanceID: 0} additiveReferencePoseFrame: 0 + - serializedVersion: 16 + name: Attack3_S_10202 + takeName: Take 001 + internalID: -998496362607748373 + firstFrame: 0 + lastFrame: 40 + 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.12 + functionName: ShowEffect + data: Effect_Slash_10202_3 + objectReferenceParameter: {instanceID: 0} + floatParameter: 0 + intParameter: 1 + messageOptions: 0 + - time: 0.15 + functionName: Move + data: + objectReferenceParameter: {instanceID: 0} + floatParameter: 0.2 + intParameter: 0 + messageOptions: 0 + - time: 0.3 + 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: [] @@ -97,6 +153,9 @@ ModelImporter: maxBonesPerVertex: 4 minBoneWeight: 0.001 optimizeBones: 1 + generateMeshLods: 0 + meshLodGenerationFlags: 0 + maximumMeshLod: -1 meshOptimizationFlags: -1 indexFormat: 0 secondaryUVAngleDistortion: 8 diff --git a/Assets/Res_Addr/Animations/pcanim_assassin.controller b/Assets/Res_Addr/Animations/pcanim_assassin.controller index e3d1e90a5..cb246fe8a 100644 --- a/Assets/Res_Addr/Animations/pcanim_assassin.controller +++ b/Assets/Res_Addr/Animations/pcanim_assassin.controller @@ -369,7 +369,7 @@ AnimatorState: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: DualBlades_Attack3 - m_Speed: 1.2 + m_Speed: 1.3 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: afbbfbe54e2f6d242983469698b3aac3, + m_Motion: {fileID: -998496362607748373, guid: 34e3b510c7557a34e9575335e96d0d13, type: 3} m_Tag: m_SpeedParameter: diff --git a/Assets/WL/Combat/CombatAnimMapping.asset b/Assets/WL/Combat/CombatAnimMapping.asset index 78e1ae61f..12b715b30 100644 --- a/Assets/WL/Combat/CombatAnimMapping.asset +++ b/Assets/WL/Combat/CombatAnimMapping.asset @@ -570,14 +570,14 @@ MonoBehaviour: intParameter: 0 floatParameter: 0 - stateName: DualBlades_Attack3 - sourceFbxPath: Assets/Res_Addr/Animations/Animation/Assassin/Stander@DualBlades_Attack3.FBX + sourceFbxPath: Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX subClipName: Attack3_S_{CID} sourceClipName: incomingExitTime: 0.5 createIfMissing: 0 firstFrame: -1 lastFrame: -1 - speed: 1.2 + speed: 1.3 events: - functionName: LookAtTarget time: 0 @@ -589,21 +589,21 @@ MonoBehaviour: - functionName: ShowEffect time: 0 useNormalized: 1 - normalizedTime: 0.1 + normalizedTime: 0.12 stringParameter: Effect_Slash_{CID}_3 intParameter: 1 floatParameter: 0 - functionName: Move time: 0 useNormalized: 1 - normalizedTime: 0.14 + normalizedTime: 0.15 stringParameter: intParameter: 0 floatParameter: 0.2 - functionName: Projectile time: 0 useNormalized: 1 - normalizedTime: 0.25 + normalizedTime: 0.3 stringParameter: Projectile_{CID} intParameter: 0 floatParameter: 0 diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat new file mode 100644 index 000000000..3c778458b --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat @@ -0,0 +1,111 @@ +%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_DaggerWhirl_FX_Whirling_Sword + m_Shader: {fileID: 4800000, guid: bd6af5d577c618947b73aa60db554e51, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + 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} + - _Flow: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 58701f16fe38a64478100c8e67203091, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + m_Texture: {fileID: 0} + 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} + - _Noise: + 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} + - _texcoord: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Blend2: 1 + - _BumpScale: 1 + - _CullMode: 0 + - _Cutoff: 0.5 + - _Depthpower: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Emission: 1 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _InvFade: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _Usecenterglow: 0 + - _Usecustomrandom: 0 + - _Usedepth: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1.2, g: 1.2, b: 1.2, a: 1} + - _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0} + - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat.meta new file mode 100644 index 000000000..a8c0bf9bf --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 46da5fd6cc529e045befd6d96b0f5be1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat new file mode 100644 index 000000000..92ed9a61a --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat @@ -0,0 +1,61 @@ +%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_DaggerWhirl_alpha_point_8 + m_Shader: {fileID: 4800000, guid: b68b99c2e57cef4419465c63c527201b, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _Flow: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 92de6f65b757cf64fbfdc94f0c25cd7f, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Noise: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _CullMode: 0 + - _Depthpower: 1 + - _Emission: 2 + - _InvFade: 1 + - _Opacity: 1 + - _Usecenterglow: 0 + - _Usedepth: 0 + m_Colors: + - _Color: {r: 0.40075463, g: 0.5622628, b: 1.2, a: 1} + - _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0} + - _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0} + - _TintColor: {r: 0, g: 0.22352941, b: 0.69411767, a: 0.49803922} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat.meta new file mode 100644 index 000000000..71c3e74c1 --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2507dd0e881f50c4ea2a6fd7674b6c65 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat new file mode 100644 index 000000000..24f4699cd --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat @@ -0,0 +1,62 @@ +%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_DaggerWhirl_eye_lwy_6 + m_Shader: {fileID: 4800000, guid: bd6af5d577c618947b73aa60db554e51, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 5 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _Flow: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: 9c053586353147d4dbef229caec7d912, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Mask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _Noise: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _texcoord: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Blend2: 1 + - _CullMode: 0 + - _Depthpower: 1 + - _Emission: 1 + - _InvFade: 1 + - _Usecenterglow: 0 + - _Usecustomrandom: 0 + - _Usedepth: 0 + m_Colors: + - _Color: {r: 1.2, g: 1.2, b: 1.2, a: 1} + - _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0} + - _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0} + - _TintColor: {r: 0.7941176, g: 0.7941176, b: 0.7941176, a: 0.5} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat.meta new file mode 100644 index 000000000..8c87eaf98 --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d9f113ca270506c4d97b00966f102759 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat new file mode 100644 index 000000000..f095db566 --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat @@ -0,0 +1,111 @@ +%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_DaggerWhirl_pd_65 + m_Shader: {fileID: 4800000, guid: bd6af5d577c618947b73aa60db554e51, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + 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} + - _Flow: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 2800000, guid: f9f336bc22710de4680eb466608331a4, type: 3} + m_Scale: {x: 0.5, y: 0.5} + m_Offset: {x: 0, y: 0} + - _Mask: + m_Texture: {fileID: 0} + 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} + - _Noise: + 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} + - _texcoord: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Blend2: 1 + - _BumpScale: 1 + - _CullMode: 0 + - _Cutoff: 0.5 + - _Depthpower: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _Emission: 2 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _InvFade: 1 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _UVSec: 0 + - _Usecenterglow: 0 + - _Usecustomrandom: 0 + - _Usedepth: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1.2, g: 1.2, b: 1.2, a: 1} + - _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0} + - _TintColor: {r: 0.2822232, g: 0.4733028, b: 0.66176474, a: 0.491} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat.meta new file mode 100644 index 000000000..9ac26e963 --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 771d1aa4bff20ba48bbad90321f07a72 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab b/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab new file mode 100644 index 000000000..68e923f60 --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab @@ -0,0 +1,418 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1636426650955946934 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7223320257394428647} + m_Layer: 0 + m_Name: WL_Impact_DaggerWhirl + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7223320257394428647 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1636426650955946934} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4888484849053366934} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &6982654839739323285 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 7223320257394428647} + m_Modifications: + - target: {fileID: 121669209962561257, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 771d1aa4bff20ba48bbad90321f07a72, type: 2} + - target: {fileID: 268999229439030574, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 268999229439030574, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.4551083 + objectReference: {fileID: 0} + - target: {fileID: 268999229439030574, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.61764705 + objectReference: {fileID: 0} + - target: {fileID: 268999229439030574, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.1625387 + objectReference: {fileID: 0} + - target: {fileID: 1005117965977653079, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1005117965977653079, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.67724454 + objectReference: {fileID: 0} + - target: {fileID: 1005117965977653079, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.9191176 + objectReference: {fileID: 0} + - target: {fileID: 1005117965977653079, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.24187307 + objectReference: {fileID: 0} + - target: {fileID: 1751918735221628297, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2} + - target: {fileID: 2314942123887552311, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2314942123887552311, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.5309597 + objectReference: {fileID: 0} + - target: {fileID: 2314942123887552311, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.7205882 + objectReference: {fileID: 0} + - target: {fileID: 2314942123887552311, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.18962848 + objectReference: {fileID: 0} + - target: {fileID: 2401369271521844934, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: d9f113ca270506c4d97b00966f102759, type: 2} + - target: {fileID: 2481186199516121484, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2481186199516121484, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.72600615 + objectReference: {fileID: 0} + - target: {fileID: 2481186199516121484, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.9852941 + objectReference: {fileID: 0} + - target: {fileID: 2481186199516121484, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.25928792 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalScale.x + value: 0.35 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalScale.y + value: 0.35 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalScale.z + value: 0.35 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2862961277274440328, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2} + - target: {fileID: 2872150984727259044, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2} + - target: {fileID: 3635310049755337268, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2} + - target: {fileID: 3795761376887037933, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3863002517998969737, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3863002517998969737, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.617647 + objectReference: {fileID: 0} + - target: {fileID: 3863002517998969737, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.83823526 + objectReference: {fileID: 0} + - target: {fileID: 3863002517998969737, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.22058824 + objectReference: {fileID: 0} + - target: {fileID: 3966090300889708928, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4297842659697493505, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_Name + value: FX_Whirling Sword + objectReference: {fileID: 0} + - target: {fileID: 4328270712253275437, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2} + - target: {fileID: 4777387061487619922, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2} + - target: {fileID: 4963428307614964137, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5224354734014303404, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2} + - target: {fileID: 5246652782678005074, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5246652782678005074, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.67724454 + objectReference: {fileID: 0} + - target: {fileID: 5246652782678005074, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.9191176 + objectReference: {fileID: 0} + - target: {fileID: 5246652782678005074, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.24187307 + objectReference: {fileID: 0} + - target: {fileID: 5404398278750731529, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5404398278750731529, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.67724454 + objectReference: {fileID: 0} + - target: {fileID: 5404398278750731529, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.9191176 + objectReference: {fileID: 0} + - target: {fileID: 5404398278750731529, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.24187307 + objectReference: {fileID: 0} + - target: {fileID: 5552495198583343871, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5552495198583343871, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.67724454 + objectReference: {fileID: 0} + - target: {fileID: 5552495198583343871, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.9191176 + objectReference: {fileID: 0} + - target: {fileID: 5552495198583343871, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.24187307 + objectReference: {fileID: 0} + - target: {fileID: 6394494345914764372, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2} + - target: {fileID: 6653844421058593838, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 2507dd0e881f50c4ea2a6fd7674b6c65, type: 2} + - target: {fileID: 7329443287245057185, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7329443287245057185, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: scalingMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7329443287245057185, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.73684204 + objectReference: {fileID: 0} + - target: {fileID: 7329443287245057185, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.2631579 + objectReference: {fileID: 0} + - target: {fileID: 8078091376226718113, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8078091376226718113, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.49303406 + objectReference: {fileID: 0} + - target: {fileID: 8078091376226718113, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.6691177 + objectReference: {fileID: 0} + - target: {fileID: 8078091376226718113, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.17608361 + objectReference: {fileID: 0} + - target: {fileID: 9145100594371461009, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: 'm_Materials.Array.data[0]' + value: + objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2} + - target: {fileID: 9170745574917042194, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: looping + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9170745574917042194, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.b + value: 0.5743034 + objectReference: {fileID: 0} + - target: {fileID: 9170745574917042194, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.g + value: 0.7794118 + objectReference: {fileID: 0} + - target: {fileID: 9170745574917042194, guid: 01d7f969ea087264999d466695415a99, + type: 3} + propertyPath: InitialModule.startColor.maxColor.r + value: 0.20510837 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 01d7f969ea087264999d466695415a99, type: 3} +--- !u!4 &4888484849053366934 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99, + type: 3} + m_PrefabInstance: {fileID: 6982654839739323285} + m_PrefabAsset: {fileID: 0} diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab.meta new file mode 100644 index 000000000..08a6be8d6 --- /dev/null +++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 40956bfe8b9e8644aa7764d8900af40b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json b/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json index 20c30f0fe..1db8023a0 100644 --- a/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json +++ b/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json @@ -105,21 +105,49 @@ { "classIds": [ 10202 ], "stages": [ 3 ], - "prefab": "WL_Impact_DaggerSpin", - "scale": 1.75, + "prefab": "WL_Impact_DaggerWhirl", + "scale": 1.0, "euler": [ 0, 0, 0 ], - "yOffset": -0.2, + "yOffset": -0.25, "calibrated": false, "follow": true, "forward": 0.0, "side": 0.0, - "life": 0.9, + "life": 1.0, "minInterval": 0.3, "alignWeapon": false, "alignFraction": 0.3, "massLocal": [ 0, 0, 0 ], "fixedDir": false, "lockFacing": false, + "spinDegrees": 360, + "spinSeconds": 0.9, + "_note_955b": "Play 실측: 팔라딘 Around 클립은 모델 yaw 36° 만 돌아(회전이 포즈에 안 구워짐) → 코드 회전 360°/0.9 s(클립 1.33 s ÷ 1.3)", + "_note_955": "#955 PD 「3타 이펙트 범위가 단검 리치보다 과하고 회전 이펙트가 아님 → 실제로 한바퀴 회전하며 공격 + 회전하는 녹색 이펙트」 — 동작 = 매핑 3타를 Paladin skill_spinslash.FBX(Sword&Shield_Skill7_Around 1.33 s · 속도 1.3)로 · 이펙트 = 원본 Skill_SpinSlash(회전 칼날 고리 · 편집 모드 대조표 955_fx_sheet) 사본 WL_Impact_DaggerWhirl(스크립트·충돌체 제거 · 녹색 tint 재질 사본) PC 에 붙어 함께 돎 · 배율 1.0(실제 0.64 · 고리 반지름 ≈ 0.8 m 추정 = 단검 리치) · spinDegrees 0 = 클립 자체 회전(실측 뒤 안 돌면 360)", + }, + { + "classIds": [ 10202 ], + "stages": [ 4 ], + "prefab": "WL_Impact_DaggerSpin", + "scale": 0.7, + "euler": [ 0, 0, 0 ], + "yOffset": 0.0, + "calibrated": false, + "follow": true, + "forward": 0.0, + "side": 0.0, + "life": 0.5, + "minInterval": 0.3, + "alignWeapon": true, + "alignFraction": 0.5, + "massLocal": [ 0, 0, 0 ], + "fixedDir": false, + "lockFacing": false, + "blinkDistance": 0.5, + "blinkGhosts": 4, + "camHoldSeconds": 0.7, + "camZoomOut": 0.6, + "_note_955": "#955 PD 4타 3건 — ① 이펙트가 궤적과 안 맞고 작음(원본 Effect_Slash_10202_4 가 발 위치에) → Shiny Slash 사본을 날(손잡이→날 끝) 방향·위치에 맞춰 작게(실제 0.45) ② 적을 뚫고 가도 카메라 회전 금지 · 살짝 줌아웃 뒤 복귀(camHold 0.7 s · 0.6 m sin) ③ 잔상 남기며 0.5 m 순간이동하듯 나타나 베기(blink 0.5 m · 잔상 4 = WLGhostStrike 살아 있는 자세)", "_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 판정" diff --git a/Assets/WL/Combat/Impact/WLImpactFx.cs b/Assets/WL/Combat/Impact/WLImpactFx.cs index 0891ded21..f714c6e22 100644 --- a/Assets/WL/Combat/Impact/WLImpactFx.cs +++ b/Assets/WL/Combat/Impact/WLImpactFx.cs @@ -33,6 +33,8 @@ namespace WL.Combat.Impact public bool follow; public float forward; public float side; public float life; public float minInterval; // side = PC 오른쪽 거리(m) // #941 PD 「창 공격 시 이펙트와 캐릭터 방향이 일치하게」 — alignWeapon = 매 프레임 무기 소켓(손잡이 → 무기 끝) 방향에 맞춰 돌리고 손잡이에서 alignFraction 만큼 간 자리에 둔다(forward/side 는 안 씀) · massLocal = 프리팹 로컬 단위의 보이는 묶음 중심(원점 보정 · Play 실측) public bool alignWeapon; public float alignFraction = 0.5f; public float[] massLocal; + // #955 PD 비수 4타·3타 부가 연출 — blinkDistance: 띄우는 순간 PC 를 정면으로 순간이동(m · 잔상 blinkGhosts 개를 길에) · camHoldSeconds: 그동안 카메라 회전·추적 고정 + camZoomOut(m) 만큼 줌아웃했다 복귀 · spinDegrees/spinSeconds: PC 를 코드로 회전(클립에 회전이 없을 때 · 0 = 안 함) + public float blinkDistance; public int blinkGhosts = 4; public float camHoldSeconds; public float camZoomOut; public float spinDegrees; public float spinSeconds = 0.6f; // #943-⑤ PD 「타격하려는 방향을 고정한 채 이펙트가 재생되는 동안 타격 판정 … 이펙트가 캐릭터 방향에 따라 마구 바뀌면 안 됨」 — fixedDir = 띄우는 순간 PC 정면(LookAtTarget 뒤 = 표적 방향)을 잡아 두고 life 동안 이펙트 방향 고정 + PC 회전도 그 방향으로 잠금(공격 상태인 동안) · 자리 = PC 중심 + 정면 alignForward + 오른쪽 alignSide + 위 yOffset − R × massLocal × 배율(PC 위치는 따라감) public bool fixedDir; public float alignForward = 0.5f; public float alignSide; public bool lockFacing = true; } /// 지면 충격파. tipContact = 칼끝이 지면(contactHeight 이내)에 닿는 프레임·자리에서 재생(단계 안에서 minDrop 이상 올라갔다 내려올 때) · 못 잡으면 timeout 뒤 최저점(fallbackHeight 이내)에. @@ -334,6 +336,7 @@ namespace WL.Combat.Impact if ((r.alignWeapon || r.fixedDir) && !cal_used) { if (fw == null) fw = inst.AddComponent(); if (fw.Arm(pc, r, scale)) how += r.fixedDir ? " fixedDir" : " alignWeapon"; else how += " alignWeapon(no-socket)"; } else if (fw != null) fw.Disarm(); SwingShown++; LastSwing = "swing " + r.prefab + " stage " + stage + " " + how + " scale=" + scale.ToString("F3"); LastLog = LastSwing; + if (r.blinkDistance > 0f || r.camHoldSeconds > 0f || r.spinDegrees != 0f) WLSwingExtras.Begin(pc, r, inst); // #955 return true; } return false; @@ -648,6 +651,62 @@ namespace WL.Combat.Impact } } + /// #955 PD 비수 4타 「잔상을 남기며 0.5 m 쯤 순간이동하듯 나타나 베기 · 적을 뚫고 가도 카메라를 돌리지 말고 살짝 줌아웃했다 복귀」 · 3타 「한바퀴 회전」 — + /// 띄우는 순간: 정면 blinkDistance 로 워프(NavMesh 위) + 길에 잔상(WLGhostStrike 살아 있는 자세) · camHoldSeconds 동안 카메라 회전·PC 기준 오프셋 고정 + sin 곡선 줌아웃 · spinDegrees 를 spinSeconds 에 걸쳐 회전(이펙트는 PC 에 붙어 함께 돈다). + public sealed class WLSwingExtras : MonoBehaviour + { + PCActor _pc; float _spinLeft, _spinRate; bool _spinning; + public static int Blinks, Spins, CamHolds; public static string LastLog = ""; + public static void Begin(PCActor pc, WLSwingFxRule r, GameObject fx) + { + if (pc == null) return; + var ex = pc.GetComponent(); if (ex == null) ex = pc.gameObject.AddComponent(); + ex._pc = pc; + if (r.blinkDistance > 0f) + { + var fwd = pc.transform.forward; fwd.y = 0f; if (fwd.sqrMagnitude < 1e-4f) fwd = Vector3.forward; fwd.Normalize(); + Vector3 from = pc.Get_position(), to = from + fwd * r.blinkDistance; + UnityEngine.AI.NavMeshHit hit; if (UnityEngine.AI.NavMesh.SamplePosition(to, out hit, 1.0f, UnityEngine.AI.NavMesh.AllAreas)) to = hit.position; + int ghosts = r.blinkGhosts > 0 ? WL.Combat.Weapon.WLGhostStrike.BlinkGhosts(pc, from, to, r.blinkGhosts) : 0; + try { pc.Set_Warp(to); } catch (System.Exception) { pc.transform.position = to; } + Blinks++; LastLog = "blink " + Vector3.Distance(from, to).ToString("F2") + " m · 잔상 " + ghosts; + } + if (r.camHoldSeconds > 0f) { WLCamHold.Begin(pc, r.camHoldSeconds, r.camZoomOut); CamHolds++; } + if (r.spinDegrees != 0f) { ex._spinLeft = r.spinDegrees; ex._spinRate = r.spinDegrees / Mathf.Max(0.05f, r.spinSeconds); ex._spinning = true; Spins++; } + } + void LateUpdate() + { + if (!_spinning || _pc == null) return; + var model = _pc.m_animation != null ? _pc.m_animation.transform : null; if (model == null) { _spinning = false; return; } + float step = _spinRate * Time.deltaTime; if (Mathf.Abs(step) > Mathf.Abs(_spinLeft)) step = _spinLeft; + model.Rotate(0f, step, 0f, Space.Self); _spinLeft -= step; // 루트가 아니라 모델 자식을 돌린다(루트는 원본이 매 프레임 표적 쪽으로 되돌려 211°/2회 실측) · 끝에 로컬 yaw 원상 + if (Mathf.Approximately(_spinLeft, 0f)) { _spinning = false; var e = model.localEulerAngles; model.localEulerAngles = new Vector3(e.x, 0f, e.z); } + } + } + + /// #955 카메라 고정 + 줌아웃 펄스 — RealCamera 의 LateUpdate 뒤(실행 순서 1000)에 회전은 고정값 · 위치 = PC + 고정 오프셋 − 앞 × 줌아웃(sin 0→1→0). 끝나면 RealCamera 가 보간으로 복귀. + [DefaultExecutionOrder(1000)] + public sealed class WLCamHold : MonoBehaviour + { + PCActor _pc; Quaternion _rot; Vector3 _offset; float _t0, _seconds, _zoom; bool _on; + public static string LastLog = ""; + public static void Begin(PCActor pc, float seconds, float zoomOut) + { + var cam = Camera.main; if (cam == null || pc == null) return; + var h = cam.GetComponent(); if (h == null) h = cam.gameObject.AddComponent(); + h._pc = pc; h._rot = cam.transform.rotation; h._offset = cam.transform.position - pc.Get_position(); h._t0 = Time.time; h._seconds = seconds; h._zoom = zoomOut; h._on = true; + LastLog = "hold " + seconds + " s · zoom " + zoomOut + " · euler " + h._rot.eulerAngles.ToString("F0"); + } + void LateUpdate() + { + if (!_on) return; + float t = Time.time - _t0; if (t >= _seconds || _pc == null) { _on = false; return; } + float k = Mathf.Sin(Mathf.Clamp01(t / _seconds) * Mathf.PI); + transform.rotation = _rot; + transform.position = _pc.Get_position() + _offset - _rot * Vector3.forward * (_zoom * k); + } + } + /// #941 궤적 교체 이펙트를 매 프레임 무기 소켓 방향(손잡이 → 무기 끝 · 수평)에 맞춘다 — 창 2타 기계총 가림처럼 PC 정면이 아니라 무기가 향한 쪽으로 쏘게. 자리 = 손잡이 + 방향 × 길이 × alignFraction + 위 yOffset − R × massLocal × 배율. public sealed class WLWeaponFollowFx : MonoBehaviour { diff --git a/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json b/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json index c24cbdfd8..d019d9212 100644 --- a/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json +++ b/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json @@ -42,10 +42,10 @@ "jumpForward": 0.4, "jumpSeconds": 0.25, "landState": "ghost_land", - "landHeight": 0.5, - "landFallSeconds": 0.15, - "slideDistance": 0.3, - "slideSeconds": 0.25, + "landHeight": 0.2, + "landFallSeconds": 0.06, + "slideDistance": 0.45, + "slideSeconds": 0.3, "landTotalSeconds": 0.45, "landAtSeconds": 3.4, "airClip": "Skill8_Air", @@ -53,13 +53,14 @@ "dustPrefab": "WL/Fx/WL_Fx_LandDust", "dustScale": 0.15, "keepCamera": 1, - "fallForward": 0.2, + "fallForward": 0.08, "landPose": "ghost_land@0.25", "landHideModel": 1, "landGhostColor": [ 0.55, 0.95, 0.85, 0.45 ], - "landGhostHold": 0.02, - "landGhostFade": 0.08, - "popGhosts": 2, + "landGhostHold": 0.03, + "landGhostFade": 0.1, + "popGhosts": 3, + "_note_955": "#955 PD 「너무 높은 데서 떨어짐 → 공중 낙하가 아니라 0.5 m 쯤 살짝 낮은 공간에서 순간이동하듯 등장하며 착지 · 수직 랜딩 뒤 미끄러짐이 아니라 전진하듯 살짝 미끄러지는 연출」 — 높이 0.5 → 0.2 · 낙하 0.15 → 0.06 s(거의 즉시 등장) · 등장 뒤 전진 미끄러짐 0.45 m / 0.3 s 감속 · 잔상 3", "_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)", diff --git a/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json b/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json index cc6f6dd28..8e916b244 100644 --- a/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json +++ b/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json @@ -12,5 +12,10 @@ "fxYOffset": 0.1, "fxLife": 2.5, "hideOriginalFx": 1, + "slashStates": [ "attack", "DualBlades_Attack2" ], + "slashInterval": 0.28, + "slashSpeed": 1.8, + "slashSeconds": 2.0, + "_note_955": "#955 PD 「주력 쓸 때 캐릭터가 공중에 뜬 채 행동 → 제자리에서 단검 난사」 — 원본 상태 사슬 DualBlades_Jump_Start → JumpAttack1·2·3(공중 자세)을 대신해 2.0 s 동안 1·2타 상태를 0.28 s 마다 번갈아(배속 1.8 · 애니메이션 이벤트 끔 = 추가 타격·궤적 없음 · 이동은 원본대로 금지) · 2.1 s 뒤 원본 순간이동·Play_Idle 그대로", "_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)는 그대로" } diff --git a/Assets/WL/Combat/Weapon/WLGhostStrike.cs b/Assets/WL/Combat/Weapon/WLGhostStrike.cs index 5de592b30..deafb1810 100644 --- a/Assets/WL/Combat/Weapon/WLGhostStrike.cs +++ b/Assets/WL/Combat/Weapon/WLGhostStrike.cs @@ -271,6 +271,25 @@ namespace WL.Combat.Weapon // ───────────────────────────────────────── #951 도약 잔상 · 착지 연출 public static int JumpSpawned, Landings, LandGhostFrames; public static string LandLog = ""; + /// #955 비수 4타 순간이동 잔상 — 지금 자세(살아 있는 메시)를 한 번 굽고 from→to 사이에 n 개(잔상 색 · 기본 유지·소멸). + public static int BlinkGhosts(Actor pc, Vector3 from, Vector3 to, int n) + { + try + { + var c = Cfg; if (c.enabled == 0 || pc == null || n <= 0) return 0; + var cast = new Cast { shooter = pc, rule = new WLGhostStrikeRule(), t0 = Time.time, groundY = pc.Get_position().y, poseCursor = 0 }; + Capture(cast, c); + var pose = BakePose(pc.transform, cast.smrs, cast.weapons); if (pose == null) return 0; + var face = to - from; face.y = 0f; if (face.sqrMagnitude < 1e-4f) face = pc.transform.forward; + int made = 0; + for (int i = 0; i < n; i++) if (Spawn(c, cast, Vector3.Lerp(from, to, (i + 0.5f) / n), face, pose)) made++; + if (pose.body != null) Object.Destroy(pose.body, c.hold + c.fade + 0.5f); + foreach (var m in pose.extraMesh) if (m != null) Object.Destroy(m, c.hold + c.fade + 0.5f); + BlinkGhostCount += made; return made; + } + catch (System.Exception ex) { Errors++; LastLog = "잔상 실패 — " + ex.Message; return 0; } + } + public static int BlinkGhostCount; /// #954 「랜딩 중 공격할 수 없어야」 — 이 시전자가 착지 연출 중인가(자동 전투는 IsStop 으로 이미 멈춤 · 수동 공격 키는 이걸로 막는다). 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; diff --git a/Assets/WL/Combat/Weapon/WLShadowSlash.cs b/Assets/WL/Combat/Weapon/WLShadowSlash.cs index 914171a55..e0507bbaf 100644 --- a/Assets/WL/Combat/Weapon/WLShadowSlash.cs +++ b/Assets/WL/Combat/Weapon/WLShadowSlash.cs @@ -34,6 +34,9 @@ namespace WL.Combat.Weapon 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) 렌더러 끔 + // #955 PD 「주력 쓸 때 왜 캐릭터가 공중에 뜬 채 행동하나 — 제자리에서 단검을 난사하도록」 — 원본 상태 사슬(DualBlades_Jump_Start → JumpAttack1·2·3 = 공중 자세)을 쓰지 않고 slashSeconds 동안 slashStates 를 slashInterval 마다 번갈아 재생(배속 slashSpeed · 애니메이션 이벤트 끔 = 추가 타격·궤적 없음) + public string[] slashStates = new string[0]; + public float slashInterval = 0.28f, slashSpeed = 1.8f, slashSeconds = 2.0f; } public static class WLShadowSlash @@ -87,6 +90,7 @@ namespace WL.Combat.Weapon if (c.hideOriginalFx != 0 && skill.go_effect != null) foreach (var rd in skill.go_effect.GetComponentsInChildren(true)) rd.enabled = false; // 풀 인스턴스라 한 번 끄면 유지 Runner.StartCoroutine(CoFx(shooter, c)); } + if (c.slashStates != null && c.slashStates.Length > 0 && !DSUtil.CheckNull(shooter) && shooter.m_animation != null) Runner.StartCoroutine(CoSlash(shooter, c)); // #955 LastLog = "cast " + Casts + " · shown " + Shown + " · scaled " + Scaled; } catch (System.Exception ex) { Errors++; LastLog = "실패 — " + ex.Message; } @@ -108,6 +112,28 @@ namespace WL.Combat.Weapon Object.Destroy(go, Mathf.Max(0.5f, c.fxLife)); FxShown++; LastLog = "fx " + c.fxPrefab + " @" + pos.ToString("F2") + " ×" + c.fxScale; } + public static int SlashLoops; public static string SlashLog = ""; + /// #955 제자리 난사 — slashSeconds 동안 slashStates 를 번갈아 CrossFade(이벤트 끔 · 배속) · 스킬 상태를 벗어나면 중단 · 끝에 이벤트·배속 원상. + static System.Collections.IEnumerator CoSlash(Actor shooter, WLShadowSlashJson c) + { + var an = shooter.m_animation; if (an == null) yield break; + bool prevEvents = an.fireEvents; an.fireEvents = false; float t0 = Time.time; int i = 0; + try + { + while (Time.time - t0 < c.slashSeconds) + { + if (DSUtil.CheckNull(shooter) || shooter.IsDead()) break; // CurAnim 조건은 뺀다(실측: 3회 만에 끊겨 원본 콤보 전이 Attack3→4(회전)·Jump 사슬이 이어졌다) · 0.28 s 마다 다시 시작하므로 상태 exit 전이에 안 걸린다 + string st = c.slashStates[i % c.slashStates.Length]; int h = Animator.StringToHash(st); + if (an.HasState(0, h)) { an.CrossFadeInFixedTime(h, 0.05f, 0, 0f); an.speed = Mathf.Max(0.1f, c.slashSpeed); SlashLoops++; } + else SlashLog = "상태 없음 " + st; + i++; + yield return new WaitForSeconds(Mathf.Max(0.05f, c.slashInterval)); + } + } + finally { if (!DSUtil.CheckNull(shooter) && shooter.m_animation != null) { shooter.m_animation.fireEvents = prevEvents; shooter.m_animation.speed = 1f; } } + SlashLog = "난사 " + i + "회 · " + (Time.time - t0).ToString("F2") + " s"; + } + /// Actor 의 protected 켜기 함수(Model_OnOff · Weapon_OnOff(bool))를 true 로 부른다 — 원본 Co_Invisible 끝과 같은 호출(가상 함수는 PCActor 쪽이 불린다). static bool Call(ref MethodInfo m, string name, Actor a) {