基本交互和视觉效果确定

This commit is contained in:
2025-05-18 02:23:06 +08:00
parent 3ef8e4441d
commit de34465cdf
20 changed files with 13210 additions and 56 deletions
+2054
View File
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 233b93e36caefda4ea729a24e528253b
VisualEffectImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0041464b147f3ab4783961fc43b53f69
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+84
View File
@@ -0,0 +1,84 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &95765272387845034
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 82830807308472210}
- component: {fileID: 1022357215298076095}
m_Layer: 0
m_Name: Light 2D
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &82830807308472210
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 95765272387845034}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1.605, y: 0.03, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1022357215298076095
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 95765272387845034}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ComponentVersion: 1
m_LightType: 3
m_BlendStyleIndex: 0
m_FalloffIntensity: 0.5
m_Color: {r: 1, g: 0, b: 0, a: 1}
m_Intensity: 15.24
m_LightVolumeIntensity: 1
m_LightVolumeIntensityEnabled: 0
m_ApplyToSortingLayers: f3a9fe5c00000000bbbb5032670b9971b7e66ab5d3878c191da0cc5f7740d514351d35393d533d9a7dc3a93dad9d9e43a55d9d3c8db9e11bb33d1a38cd4376e253b7f3d03394c91221d98fe1c7af7730011a6676
m_LightCookieSprite: {fileID: 0}
m_DeprecatedPointLightCookieSprite: {fileID: 0}
m_LightOrder: 0
m_AlphaBlendOnOverlap: 0
m_OverlapOperation: 0
m_NormalMapDistance: 3
m_NormalMapQuality: 2
m_UseNormalMap: 0
m_ShadowIntensityEnabled: 0
m_ShadowIntensity: 0.75
m_ShadowVolumeIntensityEnabled: 0
m_ShadowVolumeIntensity: 0.75
m_LocalBounds:
m_Center: {x: 0, y: -0.00000011920929, z: 0}
m_Extent: {x: 0.9985302, y: 0.99853027, z: 0}
m_PointLightInnerAngle: 360
m_PointLightOuterAngle: 360
m_PointLightInnerRadius: 0
m_PointLightOuterRadius: 1
m_ShapeLightParametricSides: 5
m_ShapeLightParametricAngleOffset: 0
m_ShapeLightParametricRadius: 1
m_ShapeLightFalloffSize: 0.5
m_ShapeLightFalloffOffset: {x: 0, y: 0}
m_ShapePath:
- {x: -0.5, y: -0.5, z: 0}
- {x: 0.5, y: -0.5, z: 0}
- {x: 0.5, y: 0.5, z: 0}
- {x: -0.5, y: 0.5, z: 0}
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d5d856ce44701ae4d8b7a3a8a182a9c8
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+630
View File
@@ -0,0 +1,630 @@
%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: Spark
m_Shader: {fileID: 4800000, guid: da8efd605fdd20949a21be6242000625, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ENABLEBRIGHTNESS_ON
- _SHADERFADING_NONE
- _SHADERSPACE_UV
- _TEXTURELAYER1SHEETTOGGLE_ON
- _TEXTURELAYER2SHEETTOGGLE_ON
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AddColorMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _AddHueMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _AlphaTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _CustomFadeFadeMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _FadingMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _InnerOutlineTintTexture:
m_Texture: {fileID: 2800000, guid: 5af9a397a8643994c829e696a24a7845, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetalMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OuterOutlineTintTexture:
m_Texture: {fileID: 2800000, guid: 5af9a397a8643994c829e696a24a7845, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _PixelOutlineTintTexture:
m_Texture: {fileID: 2800000, guid: 5af9a397a8643994c829e696a24a7845, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RecolorRGBTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RecolorRGBYCPTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShineMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SineGlowMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _StrongTintMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TextureLayer1Texture:
m_Texture: {fileID: 2800000, guid: 9685c3a024e22a946a7e8c2ce3542300, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TextureLayer2Texture:
m_Texture: {fileID: 2800000, guid: 9685c3a024e22a946a7e8c2ce3542300, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UVDistortMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UberNoiseTexture:
m_Texture: {fileID: 2800000, guid: b8d18cd117976254d94a812a0bfc336e, type: 3}
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}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddColorContrast: 0.5
- _AddColorContrastToggle: 0
- _AddColorFade: 1
- _AddColorMaskToggle: 0
- _AddHueBrightness: 2
- _AddHueContrast: 0.5
- _AddHueFade: 1
- _AddHueMaskToggle: 0
- _AddHueSaturation: 1
- _AddHueSpeed: 1
- _AlphaCutoff: 0.5
- _AlphaTintFade: 1
- _AlphaTintMinAlpha: 0.02
- _BakedMaterial: 0
- _BlackTintFade: 1
- _BlackTintPower: 4
- _Brightness: 2.5
- _BurnEdgeNoiseFactor: 0.5
- _BurnFade: 1
- _BurnInsideContrast: 2
- _BurnInsideNoiseFactor: 0.2
- _BurnRadius: 5
- _BurnSwirlFactor: 1
- _BurnWidth: 0.1
- _CamouflageAnimationToggle: 0
- _CamouflageContrast: 1
- _CamouflageDensityA: 0.4
- _CamouflageDensityB: 0.4
- _CamouflageFade: 1
- _CamouflageSmoothnessA: 0.2
- _CamouflageSmoothnessB: 0.2
- _CheckerboardDarken: 0.5
- _CheckerboardTiling: 1
- _ColorReplaceContrast: 1
- _ColorReplaceFade: 1
- _ColorReplaceRange: 0.05
- _ColorReplaceSmoothness: 0.1
- _Contrast: 1
- _CustomFadeAlpha: 1
- _CustomFadeNoiseFactor: 0
- _CustomFadeSmoothness: 2
- _DirectionalAlphaFadeFade: 0
- _DirectionalAlphaFadeInvert: 0
- _DirectionalAlphaFadeNoiseFactor: 0.2
- _DirectionalAlphaFadeRotation: 0
- _DirectionalAlphaFadeWidth: 0.2
- _DirectionalDistortionFade: 0
- _DirectionalDistortionInvert: 0
- _DirectionalDistortionNoiseFactor: 0.2
- _DirectionalDistortionRandomDirection: 0.1
- _DirectionalDistortionRotation: 0
- _DirectionalDistortionWidth: 0.5
- _DirectionalGlowFadeFade: 0
- _DirectionalGlowFadeInvert: 0
- _DirectionalGlowFadeNoiseFactor: 0.2
- _DirectionalGlowFadeRotation: 0
- _DirectionalGlowFadeWidth: 0.1
- _EnableAddColor: 0
- _EnableAddHue: 0
- _EnableAlphaTint: 0
- _EnableBlackTint: 0
- _EnableBrightness: 1
- _EnableBurn: 0
- _EnableCamouflage: 0
- _EnableCheckerboard: 0
- _EnableColorReplace: 0
- _EnableContrast: 0
- _EnableCustomFade: 0
- _EnableDirectionalAlphaFade: 0
- _EnableDirectionalDistortion: 0
- _EnableDirectionalGlowFade: 0
- _EnableEnchanted: 0
- _EnableExternalAlpha: 0
- _EnableFlame: 0
- _EnableFrozen: 0
- _EnableFullAlphaDissolve: 0
- _EnableFullDistortion: 0
- _EnableFullGlowDissolve: 0
- _EnableGaussianBlur: 0
- _EnableGlitch: 0
- _EnableHalftone: 0
- _EnableHologram: 0
- _EnableHue: 0
- _EnableInkSpread: 0
- _EnableInnerOutline: 0
- _EnableMetal: 0
- _EnableNegative: 0
- _EnableOuterOutline: 0
- _EnablePingPongGlow: 0
- _EnablePixelOutline: 0
- _EnablePixelate: 0
- _EnablePoison: 0
- _EnableRainbow: 0
- _EnableRecolorRGB: 0
- _EnableRecolorRGBYCP: 0
- _EnableSaturation: 0
- _EnableScreenTiling: 0
- _EnableShadow: 0
- _EnableSharpen: 0
- _EnableShiftHue: 0
- _EnableShifting: 0
- _EnableShine: 0
- _EnableSineGlow: 0
- _EnableSineMove: 0
- _EnableSineRotate: 0
- _EnableSineScale: 0
- _EnableSmoke: 0
- _EnableSmoothPixelArt: 0
- _EnableSourceAlphaDissolve: 0
- _EnableSourceGlowDissolve: 0
- _EnableSplitToning: 0
- _EnableSqueeze: 0
- _EnableSquish: 0
- _EnableStrongTint: 0
- _EnableTextureLayer1: 0
- _EnableTextureLayer2: 0
- _EnableUVDistort: 0
- _EnableUVRotate: 0
- _EnableUVScale: 0
- _EnableUVScroll: 0
- _EnableVibrate: 0
- _EnableWiggle: 0
- _EnableWind: 0
- _EnableWorldTiling: 0
- _EnchantedBrightness: 1
- _EnchantedContrast: 0.5
- _EnchantedFade: 1
- _EnchantedLerpToggle: 0
- _EnchantedRainbowDensity: 0.5
- _EnchantedRainbowSaturation: 0.8
- _EnchantedRainbowSpeed: 0.5
- _EnchantedRainbowToggle: 0
- _EnchantedReduce: 0
- _FadingFade: 1
- _FadingNoiseFactor: 0.2
- _FadingWidth: 0.3
- _FlameBrightness: 10
- _FlameNoiseFactor: 2.5
- _FlameNoiseHeightFactor: 1.5
- _FlameRadius: 0.2
- _FlameSmooth: 2
- _FrozenContrast: 2
- _FrozenFade: 1
- _FrozenHighlightContrast: 2
- _FrozenHighlightDensity: 1
- _FrozenSnowContrast: 1
- _FrozenSnowDensity: 0.25
- _FullAlphaDissolveFade: 0.5
- _FullAlphaDissolveWidth: 0.5
- _FullDistortionFade: 1
- _FullGlowDissolveFade: 0.5
- _FullGlowDissolveWidth: 0.5
- _GaussianBlurFade: 1
- _GaussianBlurOffset: 0.5
- _GlitchBrightness: 4
- _GlitchFade: 1
- _GlitchHueSpeed: 1
- _GlitchMaskMin: 0.4
- _HalftoneFade: 1
- _HalftoneFadeWidth: 1.5
- _HalftoneInvert: 0
- _HalftoneTiling: 4
- _HologramContrast: 1
- _HologramDistortionDensity: 0.5
- _HologramDistortionOffset: 0.5
- _HologramDistortionScale: 10
- _HologramDistortionSpeed: 2
- _HologramFade: 1
- _HologramLineFrequency: 500
- _HologramLineGap: 3
- _HologramLineSpeed: 0.01
- _HologramMinAlpha: 0.2
- _Hue: 0
- _InkSpreadContrast: 2
- _InkSpreadDistance: 3
- _InkSpreadFade: 1
- _InkSpreadNoiseFactor: 0.5
- _InkSpreadWidth: 0.2
- _InnerOutlineDistortionToggle: 0
- _InnerOutlineFade: 1
- _InnerOutlineOutlineOnlyToggle: 0
- _InnerOutlineTextureToggle: 0
- _InnerOutlineWidth: 0.02
- _MetalContrast: 2
- _MetalFade: 1
- _MetalHighlightContrast: 2
- _MetalHighlightDensity: 1
- _MetalMaskToggle: 0
- _NegativeFade: 1
- _NormalIntensity: 1
- _OuterOutlineDistortionToggle: 0
- _OuterOutlineFade: 1
- _OuterOutlineOutlineOnlyToggle: 0
- _OuterOutlineTextureToggle: 0
- _OuterOutlineWidth: 0.04
- _PingPongGlowContrast: 1
- _PingPongGlowFade: 1
- _PingPongGlowFrequency: 3
- _PixelOutlineFade: 1
- _PixelOutlineOutlineOnlyToggle: 0
- _PixelOutlineTextureToggle: 0
- _PixelOutlineWidth: 1
- _PixelPerfectSpace: 0
- _PixelPerfectUV: 0
- _PixelateFade: 1
- _PixelatePixelDensity: 16
- _PixelatePixelsPerUnit: 100
- _PixelsPerUnit: 100
- _PoisonDensity: 3
- _PoisonFade: 1
- _PoisonNoiseBrightness: 2
- _PoisonRecolorFactor: 0.5
- _PoisonShiftSpeed: 0.2
- _RainbowBrightness: 2
- _RainbowContrast: 1
- _RainbowDensity: 0.5
- _RainbowFade: 1
- _RainbowNoiseFactor: 0.2
- _RainbowSaturation: 1
- _RainbowSpeed: 1
- _RecolorRGBFade: 1
- _RecolorRGBTextureToggle: 0
- _RecolorRGBYCPFade: 1
- _RecolorRGBYCPTextureToggle: 0
- _RectHeight: 100
- _RectWidth: 100
- _Saturation: 1
- _ScreenTilingPixelsPerUnit: 100
- _ScreenWidthUnits: 10
- _ShaderFading: 0
- _ShaderSpace: 0
- _ShadowFade: 1
- _SharpenFactor: 4
- _SharpenFade: 1
- _SharpenOffset: 2
- _ShiftHueSpeed: 0.5
- _ShiftingBrightness: 1
- _ShiftingContrast: 0.5
- _ShiftingDensity: 1.5
- _ShiftingFade: 1
- _ShiftingRainbowToggle: 0
- _ShiftingSaturation: 0.8
- _ShiftingSpeed: 0.5
- _ShineContrast: 2
- _ShineFade: 1
- _ShineFrequency: 0.3
- _ShineMaskToggle: 0
- _ShineRotation: 30
- _ShineSaturation: 0.5
- _ShineSmooth: 1
- _ShineSpeed: 5
- _ShineWidth: 0.1
- _SineGlowContrast: 1
- _SineGlowFade: 1
- _SineGlowFrequency: 4
- _SineGlowMaskToggle: 0
- _SineGlowMax: 1
- _SineGlowMin: 0
- _SineMoveFade: 1
- _SineRotateAngle: 15
- _SineRotateFade: 1
- _SineRotateFrequency: 1
- _SineScaleFrequency: 2
- _SmokeAlpha: 1
- _SmokeDarkEdge: 1
- _SmokeNoiseFactor: 0.4
- _SmokeNoiseScale: 0.5
- _SmokeSmoothness: 1
- _SmokeVertexSeed: 0
- _SourceAlphaDissolveFade: 1
- _SourceAlphaDissolveInvert: 0
- _SourceAlphaDissolveNoiseFactor: 0.2
- _SourceAlphaDissolveWidth: 0.2
- _SourceGlowDissolveFade: 1
- _SourceGlowDissolveInvert: 0
- _SourceGlowDissolveNoiseFactor: 0.2
- _SourceGlowDissolveWidth: 0.1
- _SplitToningBalance: 1
- _SplitToningContrast: 1
- _SplitToningFade: 1
- _SplitToningShift: 0
- _SpriteSheetFix: 0
- _SqueezeFade: 1
- _SqueezePower: 1
- _SquishFade: 1
- _SquishFlip: 0
- _SquishSquish: 0.1
- _SquishStretch: 0.1
- _StrongTintContrast: 0
- _StrongTintContrastToggle: 0
- _StrongTintFade: 1
- _StrongTintMaskToggle: 0
- _TextureLayer1Columns: 3
- _TextureLayer1Contrast: 1
- _TextureLayer1ContrastToggle: 0
- _TextureLayer1EdgeClip: 0.005
- _TextureLayer1Fade: 1
- _TextureLayer1Rows: 3
- _TextureLayer1ScrollToggle: 0
- _TextureLayer1SheetToggle: 1
- _TextureLayer1Speed: 20
- _TextureLayer1StartFrame: 0
- _TextureLayer2Columns: 3
- _TextureLayer2Contrast: 1
- _TextureLayer2ContrastToggle: 0
- _TextureLayer2EdgeClip: 0.005
- _TextureLayer2Fade: 1
- _TextureLayer2Rows: 3
- _TextureLayer2ScrollToggle: 0
- _TextureLayer2SheetToggle: 1
- _TextureLayer2Speed: 20
- _TextureLayer2StartFrame: 0
- _TilingFix: 0
- _TimeFPS: 5
- _TimeFrequency: 2
- _TimeRange: 0.5
- _TimeSpeed: 1
- _TimeValue: 0
- _ToggleCustomTime: 0
- _ToggleTimeFPS: 0
- _ToggleTimeFrequency: 0
- _ToggleTimeSpeed: 0
- _ToggleUnscaledTime: 0
- _UVDistortFade: 1
- _UVDistortMaskToggle: 0
- _UVRotateSpeed: 1
- _VertexTintFirst: 0
- _VibrateFade: 1
- _VibrateFrequency: 100
- _VibrateOffset: 0.04
- _VibrateRotation: 4
- _WiggleFade: 1
- _WiggleFixedGroundToggle: 0
- _WiggleFrequency: 2
- _WiggleOffset: 0.02
- _WiggleSpeed: 2
- _WindFlip: 0
- _WindHighQualityNoise: 0
- _WindIsParallax: 0
- _WindLocalWind: 0
- _WindMaxIntensity: 0.4
- _WindMaxRotation: 2
- _WindMinIntensity: -0.4
- _WindNoiseScale: 0.1
- _WindNoiseSpeed: 1
- _WindRotation: 0
- _WindRotationWindFactor: 1
- _WindSquishFactor: 0.3
- _WindSquishWindFactor: 0
- _WindXPosition: 0
- _WorldTilingPixelsPerUnit: 100
m_Colors:
- _AddColorColor: {r: 2.996078, g: 0, b: 0, a: 0}
- _AlphaTintColor: {r: 95.87451, g: 5.019608, b: 95.87451, a: 0}
- _BlackTintColor: {r: 0, g: 0, b: 1, a: 0}
- _BurnEdgeColor: {r: 11.98431, g: 1.129412, b: 0.1254902, a: 0}
- _BurnEdgeNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0}
- _BurnInsideColor: {r: 0.75, g: 0.5625, b: 0.525, a: 0}
- _BurnInsideNoiseColor: {r: 3084.047, g: 257.0039, b: 0, a: 0}
- _BurnInsideNoiseScale: {r: 0.5, g: 0.5, b: 0, a: 0}
- _BurnPosition: {r: 0, g: 5, b: 0, a: 0}
- _BurnSwirlNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _CamouflageBaseColor: {r: 0.7450981, g: 0.7254902, b: 0.5686274, a: 0}
- _CamouflageColorA: {r: 0.62745106, g: 0.5882353, b: 0.43137258, a: 0}
- _CamouflageColorB: {r: 0.47058815, g: 0.43137258, b: 0.31372547, a: 0}
- _CamouflageDistortionIntensity: {r: 0.1, g: 0.1, b: 0, a: 0}
- _CamouflageDistortionScale: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CamouflageDistortionSpeed: {r: 0.1, g: 0.1, b: 0, a: 0}
- _CamouflageNoiseScaleA: {r: 0.25, g: 0.25, b: 0, a: 0}
- _CamouflageNoiseScaleB: {r: 0.25, g: 0.25, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorReplaceFromColor: {r: 0, g: 0, b: 0, a: 0}
- _ColorReplaceToColor: {r: 0, g: 0, b: 0.2, a: 0}
- _CustomFadeNoiseScale: {r: 1, g: 1, b: 0, a: 0}
- _DirectionalAlphaFadeNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0}
- _DirectionalDistortionDistortion: {r: 0, g: 0.1, b: 0, a: 0}
- _DirectionalDistortionDistortionScale: {r: 1, g: 1, b: 0, a: 0}
- _DirectionalDistortionNoiseScale: {r: 0.4, g: 0.4, b: 0, a: 0}
- _DirectionalGlowFadeEdgeColor: {r: 11.98431, g: 0.6901961, b: 0.6901961, a: 0}
- _DirectionalGlowFadeNoiseScale: {r: 0.4, g: 0.4, b: 0, a: 0}
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
- _EnchantedHighColor: {r: 0, g: 0.7098798, b: 4.237095, a: 0}
- _EnchantedLowColor: {r: 2.996078, g: 0, b: 0, a: 0}
- _EnchantedScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _EnchantedSpeed: {r: 0, g: 1, b: 0, a: 0}
- _FadingNoiseScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _FadingPosition: {r: 0, g: 0, b: 0, a: 0}
- _FlameNoiseScale: {r: 1.2, g: 0.8, b: 0, a: 0}
- _FlameSpeed: {r: 0, g: -0.5, b: 0, a: 0}
- _Flip: {r: 1, g: 1, b: 1, a: 1}
- _FrozenHighlightColor: {r: 1.797647, g: 4.604501, b: 5.992157, a: 1}
- _FrozenHighlightDistortion: {r: 0.5, g: 0.5, b: 0, a: 0}
- _FrozenHighlightDistortionScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _FrozenHighlightDistortionSpeed: {r: -0.05, g: -0.05, b: 0, a: 0}
- _FrozenHighlightScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _FrozenHighlightSpeed: {r: 0.1, g: 0.1, b: 0, a: 0}
- _FrozenSnowColor: {r: 1.123529, g: 1.373203, b: 1.498039, a: 0}
- _FrozenSnowScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _FrozenTint: {r: 1.819608, g: 4.611765, b: 5.992157, a: 0}
- _FullAlphaDissolveNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _FullDistortionDistortion: {r: 0.2, g: 0.2, b: 0, a: 0}
- _FullDistortionNoiseScale: {r: 0.5, g: 0.5, b: 0, a: 0}
- _FullGlowDissolveEdgeColor: {r: 11.98431, g: 0.627451, b: 0.627451, a: 0}
- _FullGlowDissolveNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _GlitchDistortion: {r: 0.1, g: 0, b: 0, a: 0}
- _GlitchDistortionScale: {r: 0, g: 3, b: 0, a: 0}
- _GlitchDistortionSpeed: {r: 0, g: 1, b: 0, a: 0}
- _GlitchMaskScale: {r: 0, g: 0.2, b: 0, a: 0}
- _GlitchMaskSpeed: {r: 0, g: 4, b: 0, a: 0}
- _GlitchNoiseScale: {r: 0, g: 3, b: 0, a: 0}
- _GlitchNoiseSpeed: {r: 0, g: 1, b: 0, a: 0}
- _HalftonePosition: {r: 0, g: 0, b: 0, a: 0}
- _HologramTint: {r: 0.3137255, g: 1.662745, b: 2.996078, a: 1}
- _InkSpreadColor: {r: 8.47419, g: 5.013525, b: 0.08873497, a: 0}
- _InkSpreadNoiseScale: {r: 0.4, g: 0.4, b: 0, a: 0}
- _InkSpreadPosition: {r: 0.5, g: -1, b: 0, a: 0}
- _InnerOutlineColor: {r: 11.98431, g: 1.254902, b: 1.254902, a: 1}
- _InnerOutlineDistortionIntensity: {r: 0.01, g: 0.01, b: 0, a: 0}
- _InnerOutlineNoiseScale: {r: 4, g: 4, b: 0, a: 0}
- _InnerOutlineNoiseSpeed: {r: 0, g: 0.1, b: 0, a: 0}
- _InnerOutlineTextureSpeed: {r: 0.5, g: 0, b: 0, a: 0}
- _MetalColor: {r: 5.992157, g: 3.639216, b: 0.3137255, a: 1}
- _MetalHighlightColor: {r: 5.992157, g: 3.796078, b: 0.6588235, a: 1}
- _MetalNoiseDistortion: {r: 0.5, g: 0.5, b: 0, a: 0}
- _MetalNoiseDistortionScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _MetalNoiseDistortionSpeed: {r: -0.05, g: -0.05, b: 0, a: 0}
- _MetalNoiseScale: {r: 0.25, g: 0.25, b: 0, a: 0}
- _MetalNoiseSpeed: {r: 0.05, g: 0.05, b: 0, a: 0}
- _OuterOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _OuterOutlineDistortionIntensity: {r: 0.01, g: 0.01, b: 0, a: 0}
- _OuterOutlineNoiseScale: {r: 4, g: 4, b: 0, a: 0}
- _OuterOutlineNoiseSpeed: {r: 0, g: 0.1, b: 0, a: 0}
- _OuterOutlineTextureSpeed: {r: 0.5, g: 0, b: 0, a: 0}
- _PingPongGlowFrom: {r: 5.992157, g: 0.1882353, b: 0.1882353, a: 0}
- _PingPongGlowTo: {r: 0.1882353, g: 0.1882353, b: 5.992157, a: 0}
- _PixelOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _PixelOutlineTextureSpeed: {r: 0.5, g: 0, b: 0, a: 0}
- _PoisonColor: {r: 0.3137255, g: 2.996078, b: 0.3137255, a: 0}
- _PoisonNoiseScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _PoisonNoiseSpeed: {r: 0, g: -0.2, b: 0, a: 0}
- _RainbowCenter: {r: 0, g: 0, b: 0, a: 0}
- _RainbowNoiseScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _RecolorRGBBlueTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBGreenTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBRedTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPBlueTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPCyanTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPGreenTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPPurpleTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPRedTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPYellowTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
- _ScreenTilingOffset: {r: 0, g: 0, b: 0, a: 0}
- _ScreenTilingScale: {r: 1, g: 1, b: 0, a: 0}
- _ShadowColor: {r: 0, g: 0, b: 0, a: 0}
- _ShadowOffset: {r: 0.05, g: -0.05, b: 0, a: 0}
- _ShiftingColorA: {r: 1.498039, g: 0, b: 0, a: 0}
- _ShiftingColorB: {r: 1.498039, g: 0.7490196, b: 0, a: 0}
- _ShineColor: {r: 11.98431, g: 11.98431, b: 11.98431, a: 0}
- _SineGlowColor: {r: 0, g: 2.007843, b: 2.996078, a: 0}
- _SineMoveFrequency: {r: 1, g: 1, b: 0, a: 0}
- _SineMoveOffset: {r: 0, g: 0.5, b: 0, a: 0}
- _SineRotatePivot: {r: 0.5, g: 0.5, b: 0, a: 0}
- _SineScaleFactor: {r: 0.2, g: 0.2, b: 0, a: 0}
- _SourceAlphaDissolveNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0}
- _SourceAlphaDissolvePosition: {r: 0, g: 0, b: 0, a: 0}
- _SourceGlowDissolveEdgeColor: {r: 11.98431, g: 0.627451, b: 0.627451, a: 0}
- _SourceGlowDissolveNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0}
- _SourceGlowDissolvePosition: {r: 0, g: 0, b: 0, a: 0}
- _SplitToningHighlightsColor: {r: 1, g: 0.1, b: 0.1, a: 0}
- _SplitToningShadowsColor: {r: 0.1, g: 0.4000002, b: 1, a: 0}
- _SpriteSheetRect: {r: 0, g: 0, b: 1, a: 1}
- _SqueezeCenter: {r: 0.5, g: 0.5, b: 0, a: 0}
- _SqueezeScale: {r: 2, g: 0, b: 0, a: 0}
- _StrongTintTint: {r: 1, g: 1, b: 1, a: 1}
- _TextureLayer1Color: {r: 0.4494117, g: 1.298301, b: 2.996079, a: 1}
- _TextureLayer1Offset: {r: 0, g: 0, b: 0, a: 0}
- _TextureLayer1Scale: {r: 1, g: 1, b: 0, a: 0}
- _TextureLayer1ScrollSpeed: {r: 0, g: 1, b: 0, a: 0}
- _TextureLayer2Color: {r: 0.4494117, g: 1.298301, b: 2.996079, a: 1}
- _TextureLayer2Offset: {r: 0, g: 0, b: 0, a: 0}
- _TextureLayer2Scale: {r: 1, g: 1, b: 0, a: 0}
- _TextureLayer2ScrollSpeed: {r: 0, g: 1, b: 0, a: 0}
- _UVDistortFrom: {r: -0.02, g: -0.02, b: 0, a: 0}
- _UVDistortNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _UVDistortSpeed: {r: 2, g: 2, b: 0, a: 0}
- _UVDistortTo: {r: 0.02, g: 0.02, b: 0, a: 0}
- _UVRotatePivot: {r: 0.5, g: 0.5, b: 0, a: 0}
- _UVScalePivot: {r: 0.5, g: 0.5, b: 0, a: 0}
- _UVScaleScale: {r: 1, g: 1, b: 0, a: 0}
- _UVScrollSpeed: {r: 0.2, g: 0, b: 0, a: 0}
- _WorldTilingOffset: {r: 0, g: 0, b: 0, a: 0}
- _WorldTilingScale: {r: 1, g: 1, b: 0, a: 0}
m_BuildTextureStacks: []
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 48de36862cc7d244283cfef7e860f6c3
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d430e5a1618404b4ea2b5fa9ebdee7e0
VisualEffectImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5f5e38884ddae4f4193ac45637f6c2b2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+645 -20
View File
@@ -393,7 +393,7 @@ MonoBehaviour:
m_Bits: 1
m_VolumeTrigger: {fileID: 0}
m_VolumeFrameworkUpdateModeOption: 2
m_RenderPostProcessing: 0
m_RenderPostProcessing: 1
m_Antialiasing: 0
m_AntialiasingQuality: 2
m_StopNaN: 0
@@ -424,7 +424,7 @@ Camera:
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 2
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0}
m_projectionMatrixMode: 1
m_GateFitMode: 2
m_FOVAxisMode: 0
@@ -480,6 +480,55 @@ Transform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &606796328
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 606796330}
- component: {fileID: 606796329}
m_Layer: 0
m_Name: Global Volume
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &606796329
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 606796328}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IsGlobal: 1
priority: 0
blendDistance: 0
weight: 1
sharedProfile: {fileID: 11400000, guid: ce5b9ddde40e4f94aacb55513b99c0ce, type: 2}
--- !u!4 &606796330
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 606796328}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.2653519, y: 0.0444257, z: -0.012155832}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &619394800
GameObject:
m_ObjectHideFlags: 0
@@ -514,7 +563,7 @@ MonoBehaviour:
m_BlendStyleIndex: 0
m_FalloffIntensity: 0.5
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 1
m_Intensity: 0.45
m_LightVolumeIntensity: 1
m_LightVolumeIntensityEnabled: 0
m_ApplyToSortingLayers: 00000000
@@ -1305,6 +1354,393 @@ Material:
- _WorldTilingOffset: {r: 0, g: 0, b: 0, a: 0}
- _WorldTilingScale: {r: 1, g: 1, b: 0, a: 0}
m_BuildTextureStacks: []
--- !u!1 &1076119583
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1076119584}
- component: {fileID: 1076119585}
m_Layer: 0
m_Name: CutLineManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1076119584
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1076119583}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -2.655861, y: -1.042735, z: 0.3322584}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1599995100}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1076119585
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1076119583}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6fe8e1ba5a1fbed40b777c74953b13bd, type: 3}
m_Name:
m_EditorClassIdentifier:
cutLineWidth: 0.1
noiseAmount: 0.05
segmentDuration: 4
cutLineDelay: 3
mainCutLineRenderer: {fileID: 2135342731}
--- !u!1 &1134735425
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1134735426}
- component: {fileID: 1134735427}
m_Layer: 0
m_Name: Trail
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &1134735426
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1134735425}
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: []
m_Father: {fileID: 1847799428}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!96 &1134735427
TrailRenderer:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1134735425}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Time: 1
m_PreviewTimeScale: 1
m_Parameters:
serializedVersion: 3
widthMultiplier: 1
widthCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0.027952194
value: 0.30451202
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
colorGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
key1: {r: 1, g: 1, b: 1, a: 1}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_ColorSpace: -1
m_NumColorKeys: 2
m_NumAlphaKeys: 2
numCornerVertices: 0
numCapVertices: 0
alignment: 0
textureMode: 0
textureScale: {x: 1, y: 1}
shadowBias: 0.5
generateLightingData: 0
m_MinVertexDistance: 0.1
m_MaskInteraction: 0
m_Autodestruct: 0
m_Emitting: 1
m_ApplyActiveColorSpace: 1
--- !u!114 &1143393751 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 1022357215298076095, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
m_PrefabInstance: {fileID: 1737761513}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1390739319
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1390739322}
- component: {fileID: 1390739321}
- component: {fileID: 1390739320}
m_Layer: 0
m_Name: Visual Effect
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!73398921 &1390739320
VFXRenderer:
serializedVersion: 1
m_ObjectHideFlags: 2
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1390739319}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 0
m_LightProbeUsage: 0
m_ReflectionProbeUsage: 0
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 5
--- !u!2083052967 &1390739321
VisualEffect:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1390739319}
m_Enabled: 1
m_Asset: {fileID: 8926484042661614526, guid: d430e5a1618404b4ea2b5fa9ebdee7e0, type: 3}
m_InitialEventName: OnStop
m_InitialEventNameOverriden: 1
m_StartSeed: 0
m_ResetSeedOnPlay: 0
m_AllowInstancing: 1
m_ResourceVersion: 1
m_PropertySheet:
m_Float:
m_Array:
- m_Value: 0
m_Name: Spawn Rate
m_Overridden: 0
- m_Value: 5
m_Name: Density
m_Overridden: 0
- m_Value: 0.2
m_Name: Sparkle Width
m_Overridden: 1
- m_Value: 0.5
m_Name: Drag
m_Overridden: 0
- m_Value: 1.97
m_Name: Initial Velocity Divergence
m_Overridden: 1
- m_Value: 0.07
m_Name: Turbulence Intensity
m_Overridden: 1
m_Vector2f:
m_Array:
- m_Value: {x: 0.05, y: 0.05}
m_Name: Loop Duration Min/Max
m_Overridden: 1
- m_Value: {x: 300, y: 1000}
m_Name: Burst Count Min/Max
m_Overridden: 1
- m_Value: {x: 0.02, y: 0.08}
m_Name: Size Min/Max
m_Overridden: 1
- m_Value: {x: 0.2, y: 1}
m_Name: Lifetime Min/Max
m_Overridden: 1
m_Vector3f:
m_Array:
- m_Value: {x: 0, y: 1, z: 0}
m_Name: Bounds_center
m_Overridden: 0
- m_Value: {x: -0.15, y: 0, z: 0}
m_Name: Initial Position
m_Overridden: 0
- m_Value: {x: 0, y: 0, z: 0}
m_Name: Gravity Vector
m_Overridden: 1
- m_Value: {x: 3, y: 4, z: 2}
m_Name: Bounds_size
m_Overridden: 0
- m_Value: {x: 10, y: 0, z: 0}
m_Name: Initial Velocity_vector
m_Overridden: 1
- m_Value: {x: 0, y: 0, z: 0}
m_Name: Turbulence Noise Position
m_Overridden: 0
m_Vector4f:
m_Array: []
m_Uint:
m_Array: []
m_Int:
m_Array: []
m_Matrix4x4f:
m_Array: []
m_AnimationCurve:
m_Array: []
m_Gradient:
m_Array:
- m_Value:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
key1: {r: 0.5816024, g: 0.040479675, b: 0.6377666, a: 1}
key2: {r: 0, g: 0, b: 0, a: 0}
key3: {r: 0, g: 0, b: 0, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 35533
ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 1
m_ColorSpace: -1
m_NumColorKeys: 2
m_NumAlphaKeys: 2
m_Name: New Gradient
m_Overridden: 0
m_NamedObject:
m_Array: []
m_Bool:
m_Array: []
--- !u!4 &1390739322
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1390739319}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 3.66, y: 0.31, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1568743342
GameObject:
m_ObjectHideFlags: 0
@@ -1407,10 +1843,19 @@ MonoBehaviour:
snapDistance: 0.3
detachDistance: 10
tractionSpeed: 1
edgePointsScale: 1.2
edgePointsScale: 1.15
cutLineRenderer: {fileID: 2135342731}
cutLineWidth: 0.1
noiseAmount: 0.05
segmentDuration: 4
cutLight: {fileID: 1143393751}
lightPulseSpeed: 5
lightMaxIntensity: 2.5
shakeAmount: 0.045
sparkVFX: {fileID: 1390739321}
maxEmissionRate: 50
emissionChangeSpeed: 100
cutLineDelay: 3
--- !u!1 &1598025874
GameObject:
m_ObjectHideFlags: 0
@@ -1504,26 +1949,14 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1599995100}
- component: {fileID: 1599995099}
- component: {fileID: 1599995101}
m_Layer: 0
m_Name: cutSystem
m_Name: CutSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1599995099
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1599995098}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1d60d9d21fc583d41aaa736fc5b2fa72, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IsActive: 0
--- !u!4 &1599995100
Transform:
m_ObjectHideFlags: 0
@@ -1536,9 +1969,198 @@ Transform:
m_LocalPosition: {x: 2.8434532, y: 0.57372546, z: 0.1661907}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 1847799428}
- {fileID: 1076119584}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1599995101
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1599995098}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ee21f841c30549c43837ad222c4892b3, type: 3}
m_Name:
m_EditorClassIdentifier:
snapDistance: 0.3
detachDistance: 12
directionSwitchCooldown: 0.2
tractionSpeed: 2
TargetspriteRenderer: {fileID: 2110358530}
--- !u!1001 &1737761513
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalScale.x
value: 1
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalScale.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalScale.z
value: 1
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalPosition.x
value: 1.605
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalPosition.y
value: 0.029999971
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 82830807308472210, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 95765272387845034, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
propertyPath: m_Name
value: Light 2D
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d5d856ce44701ae4d8b7a3a8a182a9c8, type: 3}
--- !u!1 &1847799427
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1847799428}
- component: {fileID: 1847799430}
- component: {fileID: 1847799429}
m_Layer: 0
m_Name: Gear
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1847799428
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1847799427}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0.8165469, y: -0.26372546, z: -0.1661907}
m_LocalScale: {x: 1.5038, y: 1.5038, z: 1.5038}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1134735426}
m_Father: {fileID: 1599995100}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1847799429
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1847799427}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b570555589f44fb4889f5dd5712ced34, type: 3}
m_Name:
m_EditorClassIdentifier:
rotationSpeed: 360
snapDistance: 0.3
detachDistance: 10
--- !u!212 &1847799430
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1847799427}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 5
m_Sprite: {fileID: -940084629, guid: bafdc649320f43648818df231a45ad8f, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 0.9116279, y: 0.9162791}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &2110358528
GameObject:
m_ObjectHideFlags: 0
@@ -1854,3 +2476,6 @@ SceneRoots:
- {fileID: 1598025876}
- {fileID: 1599995100}
- {fileID: 2135342730}
- {fileID: 1737761513}
- {fileID: 606796330}
- {fileID: 1390739322}
@@ -0,0 +1,118 @@
using System.Collections.Generic;
using UnityEngine;
public class CutLineManager : MonoBehaviour
{
[Header("切割线参数")]
public float cutLineWidth = 0.1f;
public float noiseAmount = 0.05f; // 毛刺偏移幅度
public float segmentDuration = 4f; // 线段持续时间
public float cutLineDelay = 3f; // 延迟几秒才显示轨迹点
public LineRenderer mainCutLineRenderer;
private List<TimedPoint> timedCutPoints = new List<TimedPoint>();
private bool isCutting = false;
public bool IsCutting => isCutting; // Public property to access isCutting state
private class TimedPoint
{
public Vector3 position;
public float timeAdded;
public TimedPoint(Vector3 pos, float time)
{
position = pos;
timeAdded = time;
}
}
private void Awake()
{
InitializeMainCutLine();
}
private void InitializeMainCutLine()
{
GameObject cutLineObj = new GameObject("MainCutLine");
cutLineObj.transform.parent = transform;
mainCutLineRenderer = cutLineObj.AddComponent<LineRenderer>();
mainCutLineRenderer.positionCount = 0;
mainCutLineRenderer.widthCurve = AnimationCurve.Constant(0, 1, cutLineWidth);
mainCutLineRenderer.material = new Material(Shader.Find("Sprites/Default"));
mainCutLineRenderer.numCapVertices = 0;
mainCutLineRenderer.sortingOrder = 1;
}
public void StartCutting()
{
isCutting = true;
timedCutPoints.Clear();
if (mainCutLineRenderer != null)
{
mainCutLineRenderer.positionCount = 0;
}
}
public void AddCutPoint(Vector3 point)
{
if (!isCutting) return;
if (timedCutPoints.Count == 0 || Vector3.Distance(timedCutPoints[timedCutPoints.Count - 1].position, point) > 0.05f)
{
timedCutPoints.Add(new TimedPoint(point, Time.time));
if (timedCutPoints.Count >= 2)
{
Vector3 prev = timedCutPoints[timedCutPoints.Count - 2].position;
Vector3 curr = timedCutPoints[timedCutPoints.Count - 1].position;
CreateSegment(prev, curr);
}
}
}
public void EndCutting()
{
isCutting = false;
}
private void Update()
{
UpdateCutLineRenderer();
}
private void UpdateCutLineRenderer()
{
if (mainCutLineRenderer == null) return;
float currentTime = Time.time;
List<Vector3> visiblePoints = new List<Vector3>();
foreach (var timedPoint in timedCutPoints)
{
if (currentTime - timedPoint.timeAdded >= cutLineDelay)
{
visiblePoints.Add(timedPoint.position);
}
}
mainCutLineRenderer.positionCount = visiblePoints.Count;
if (visiblePoints.Count > 0)
mainCutLineRenderer.SetPositions(visiblePoints.ToArray());
}
private void CreateSegment(Vector3 from, Vector3 to)
{
GameObject segObj = new GameObject("HeatLineSegment");
segObj.transform.parent = transform;
LineRenderer segLine = segObj.AddComponent<LineRenderer>();
segLine.positionCount = 2;
segLine.SetPosition(0, from);
segLine.SetPosition(1, to);
segLine.sortingOrder = 4;
segLine.material = new Material(Shader.Find("Sprites/Default"));
segLine.widthCurve = AnimationCurve.Constant(0, 1, cutLineWidth);
segLine.numCapVertices = 0;
var segmentController = segObj.AddComponent<HeatLineSegmentController>();
segmentController.duration = segmentDuration;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6fe8e1ba5a1fbed40b777c74953b13bd
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,198 @@
using UnityEngine;
using System.Collections.Generic;
public class CuttingSystem : MonoBehaviour
{
[Header("切割系统参数")]
public float snapDistance = 0.3f;
public float detachDistance = 1.0f;
public float directionSwitchCooldown = 0.2f;
private CutLineManager cutLineManager;
public float tractionSpeed = 2f;
[Header("测试")]
public SpriteRenderer TargetspriteRenderer;
private GearController gearController;
private Camera mainCamera;
private int currentEdgeIndex = 0;
private int tractionDirection = 1;
private float directionSwitchTimer = 0f;
private enum State { Follow, Traction }
private State currentState = State.Follow;
private List<Vector2> edgePoints;
private List<Vector2> originalEdgePoints;
private void Start()
{
mainCamera = Camera.main;
gearController = GetComponentInChildren<GearController>();
cutLineManager = GetComponentInChildren<CutLineManager>();
edgePoints = new List<Vector2>();
originalEdgePoints = new List<Vector2>();
if (TargetspriteRenderer != null)
{
InitializeCutting(TargetspriteRenderer);
}
else
{
Debug.LogError("TargetspriteRenderer is null!");
}
}
private void Update()
{
UpdateCutting();
}
public void InitializeCutting(SpriteRenderer targetSprite, float edgePointsScale = 1.2f)
{
if (targetSprite == null) return;
LoadEdgePointsFromSprite(targetSprite, edgePointsScale);
Debug.Log($"InitializeCutting: edgePoints count = {edgePoints.Count}");
}
public void UpdateCutting()
{
Vector2 mouseWorldPos = mainCamera.ScreenToWorldPoint(Input.mousePosition);
if (Input.GetMouseButton(0))
{
gearController.SetRotation(true);
}
else
{
gearController.SetRotation(false);
}
switch (currentState)
{
case State.Follow:
UpdateFollowState(mouseWorldPos);
break;
case State.Traction:
UpdateTractionState(mouseWorldPos);
break;
}
}
private void LoadEdgePointsFromSprite(SpriteRenderer targetSprite, float edgePointsScale)
{
var shapePoints = CuttingUtils.GetSpritePhysicsShapePoints(targetSprite);
if (shapePoints == null) return;
var (scaledPoints, originalPoints) = CuttingUtils.ProcessEdgePoints(shapePoints, targetSprite, edgePointsScale);
if (scaledPoints == null) return;
edgePoints = scaledPoints;
originalEdgePoints = originalPoints;
Debug.Log($"LoadEdgePointsFromSprite: edgePoints count = {edgePoints.Count}");
}
private void UpdateFollowState(Vector2 mousePos)
{
gearController.transform.position = mousePos;
int nearestIndex = CuttingUtils.FindNearestEdgePointIndex(mousePos, edgePoints, out float dist);
Debug.Log($"Distance to nearest point: {dist}, Snap distance: {snapDistance}");
if (dist < snapDistance)
{
currentEdgeIndex = nearestIndex;
Vector2 prev = edgePoints[CuttingUtils.WrapIndex(currentEdgeIndex - 1, edgePoints.Count)];
Vector2 next = edgePoints[CuttingUtils.WrapIndex(currentEdgeIndex + 1, edgePoints.Count)];
float distToPrev = Vector2.Distance(mousePos, prev);
float distToNext = Vector2.Distance(mousePos, next);
tractionDirection = (distToNext < distToPrev) ? 1 : -1;
gearController.transform.position = edgePoints[currentEdgeIndex];
currentState = State.Traction;
Debug.Log("Switched to Traction state");
}
}
private void UpdateTractionState(Vector2 mousePos)
{
Vector2 gearPos = transform.position;
if (Vector2.Distance(mousePos, gearPos) > detachDistance)
{
currentState = State.Follow;
cutLineManager.EndCutting();
return;
}
if (!Input.GetMouseButton(0))
{
cutLineManager.EndCutting();
return;
}
if (!cutLineManager.IsCutting)
{
cutLineManager.StartCutting();
}
int nextIndex = CuttingUtils.WrapIndex(currentEdgeIndex + tractionDirection, edgePoints.Count);
Vector2 from = edgePoints[currentEdgeIndex];
Vector2 to = edgePoints[nextIndex];
Vector2 forward = (to - from).normalized;
Vector2 toMouse = (mousePos - from).normalized;
float angle = Vector2.SignedAngle(forward, toMouse);
if (Mathf.Abs(angle) > 120f)
{
directionSwitchTimer += Time.deltaTime;
if (directionSwitchTimer > directionSwitchCooldown)
{
tractionDirection *= -1;
directionSwitchTimer = 0f;
nextIndex = CuttingUtils.WrapIndex(currentEdgeIndex + tractionDirection, edgePoints.Count);
from = edgePoints[currentEdgeIndex];
to = edgePoints[nextIndex];
forward = (to - from).normalized;
}
}
else
{
directionSwitchTimer = 0f;
}
Vector2 targetPoint = CuttingUtils.GetClosestPointOnSegment(from, to, mousePos);
Vector2 moveDir = (targetPoint - gearPos);
float distance = moveDir.magnitude;
float maxStep = tractionSpeed * Time.deltaTime;
if (distance <= maxStep)
{
gearController.transform.position = targetPoint;
if (Vector2.Distance(targetPoint, to) < 0.01f)
{
currentEdgeIndex = nextIndex;
}
}
else
{
gearController.transform.position += (Vector3)(moveDir.normalized * maxStep);
}
Vector2 originalFrom = originalEdgePoints[currentEdgeIndex];
Vector2 originalTo = originalEdgePoints[nextIndex];
Vector2 originalTargetPoint = CuttingUtils.GetClosestPointOnSegment(originalFrom, originalTo, transform.position);
Vector3 noisyPoint = originalTargetPoint;
noisyPoint.x += Random.Range(-cutLineManager.noiseAmount, cutLineManager.noiseAmount);
noisyPoint.y += Random.Range(-cutLineManager.noiseAmount, cutLineManager.noiseAmount);
cutLineManager.AddCutPoint(noisyPoint);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ee21f841c30549c43837ad222c4892b3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,102 @@
using UnityEngine;
using System.Collections.Generic;
public static class CuttingUtils
{
public static int FindNearestEdgePointIndex(Vector2 pos, List<Vector2> edgePoints, out float minDist)
{
int nearestIndex = 0;
minDist = float.MaxValue;
for (int i = 0; i < edgePoints.Count; i++)
{
float dist = Vector2.Distance(pos, edgePoints[i]);
if (dist < minDist)
{
minDist = dist;
nearestIndex = i;
}
}
return nearestIndex;
}
public static Vector2 GetClosestPointOnSegment(Vector2 a, Vector2 b, Vector2 p)
{
Vector2 ab = b - a;
float t = Vector2.Dot(p - a, ab) / ab.sqrMagnitude;
t = Mathf.Clamp01(t);
return a + ab * t;
}
public static int WrapIndex(int index, int count)
{
if (index < 0) return count - 2;
if (index >= count - 1) return 0;
return index;
}
public static List<Vector2> GetSpritePhysicsShapePoints(SpriteRenderer spriteRenderer)
{
List<Vector2> shapePoints = new List<Vector2>();
spriteRenderer.sprite.GetPhysicsShape(0, shapePoints);
if (shapePoints.Count == 0)
{
Debug.LogError("目标Sprite没有物理形状点");
return null;
}
return shapePoints;
}
public static (List<Vector2> scaledPoints, List<Vector2> originalPoints) ProcessEdgePoints(
List<Vector2> shapePoints,
SpriteRenderer spriteRenderer,
float edgePointsScale = 1.2f,
float desiredSegmentLength = 0.1f)
{
if (shapePoints == null || shapePoints.Count == 0) return (null, null);
List<Vector2> scaledPoints = new List<Vector2>();
List<Vector2> originalPoints = new List<Vector2>();
// 计算中心点
Vector2 center = Vector2.zero;
foreach (Vector2 point in shapePoints)
{
center += point;
}
center /= shapePoints.Count;
// 处理每个线段
for (int i = 0; i < shapePoints.Count; i++)
{
Vector2 p1 = spriteRenderer.transform.TransformPoint(shapePoints[i]);
Vector2 p2 = spriteRenderer.transform.TransformPoint(shapePoints[(i + 1) % shapePoints.Count]);
Vector2 scaledP1 = center + (p1 - center) * edgePointsScale;
Vector2 scaledP2 = center + (p2 - center) * edgePointsScale;
float segmentLength = Vector2.Distance(scaledP1, scaledP2);
int steps = Mathf.Max(1, Mathf.CeilToInt(segmentLength / desiredSegmentLength));
for (int s = 0; s < steps; s++)
{
float t = (float)s / steps;
Vector2 interpolated = Vector2.Lerp(scaledP1, scaledP2, t);
Vector2 originalInterpolated = Vector2.Lerp(p1, p2, t);
scaledPoints.Add(interpolated);
originalPoints.Add(originalInterpolated);
}
}
// 确保首尾相连
if ((scaledPoints[0] - scaledPoints[scaledPoints.Count - 1]).sqrMagnitude > 0.0001f)
{
scaledPoints.Add(scaledPoints[0]);
originalPoints.Add(originalPoints[0]);
}
return (scaledPoints, originalPoints);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6fd7ba5ee9e9b7a4ca602330a830ac95
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,26 @@
using UnityEngine;
public class GearController : MonoBehaviour
{
[Header("齿轮参数")]
public float rotationSpeed = 360f;
public float snapDistance = 0.3f;
public float detachDistance = 10.0f;
private bool isRotating = false;
public void SetRotation(bool shouldRotate)
{
isRotating = shouldRotate;
}
private void Update()
{
if (isRotating)
{
transform.Rotate(Vector3.forward, -rotationSpeed * Time.deltaTime);
}
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b570555589f44fb4889f5dd5712ced34
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,6 +1,8 @@
using System.Collections.Generic;
using Shapes;
using UnityEngine;
using UnityEngine.Rendering.Universal;
using UnityEngine.VFX;
public class GearFollower : MonoBehaviour
{
@@ -13,12 +15,22 @@ public class GearFollower : MonoBehaviour
[Header("切割轨迹")]
public LineRenderer cutLineRenderer;
public float cutLineWidth = 0.1f;
public float noiseAmount = 0.05f; // 毛刺偏移幅度
public float segmentDuration = 4f; // 线段持续时间
[Header("震动与光照反馈")]
public Light2D cutLight; // 需要使用 Unity 的 2D 点光源(URP
public float lightPulseSpeed = 5f;
public float lightMaxIntensity = 1.5f;
public float shakeAmount = 0.05f;
[Header("VFX火花")]
public VisualEffect sparkVFX; // 关联Spark VFX Graph组件
public float maxEmissionRate = 50f; // 最大发射速率
public float emissionChangeSpeed = 100f; // 发射速率变化速度
private float currentEmissionRate = 0f;
private Vector3 originalLocalPosition;
private List<Vector2> edgePoints;
private List<Vector2> originalEdgePoints; // 存储原始边缘点
private int currentEdgeIndex = 0;
@@ -26,15 +38,10 @@ public class GearFollower : MonoBehaviour
private enum State { Follow, Traction }
private State currentState = State.Follow;
private Camera mainCamera;
private List<Vector3> cutLinePoints = new List<Vector3>();
private bool isCutting = false;
private float directionSwitchCooldown = 0.2f;
private float directionSwitchTimer = 0f;
private class TimedPoint
{
public Vector3 position;
@@ -45,25 +52,30 @@ public class GearFollower : MonoBehaviour
timeAdded = time;
}
}
private List<TimedPoint> timedCutPoints = new List<TimedPoint>();
public float cutLineDelay = 3f; // 延迟几秒才显示轨迹点
public float cutLineDelay = 3f;
private Vector3 shakeOffset = Vector3.zero;
private Vector3 targetPosition = Vector3.zero;
private bool isInTractionMode = false;
void Start()
{
mainCamera = Camera.main;
LoadEdgePointsFromSprite();
if (cutLineRenderer != null)
{
cutLineRenderer.positionCount = 0;
cutLineRenderer.widthCurve = AnimationCurve.Constant(0, 1, cutLineWidth);
cutLineRenderer.material = new Material(Shader.Find("Sprites/Default"));
cutLineRenderer.numCapVertices = 0; // 线头不圆滑,显锐利
cutLineRenderer.numCapVertices = 0;
cutLineRenderer.sortingOrder = 1;
}
if (cutLight != null)
{
cutLight.intensity = 0f;
cutLight.enabled = false;
}
}
void Update()
{
Vector2 mouseWorldPos = mainCamera.ScreenToWorldPoint(Input.mousePosition);
@@ -72,7 +84,6 @@ public class GearFollower : MonoBehaviour
{
transform.Rotate(Vector3.forward, -360f * Time.deltaTime);
}
switch (currentState)
{
case State.Follow:
@@ -83,18 +94,60 @@ public class GearFollower : MonoBehaviour
break;
}
UpdateCutLineRenderer();
UpdateVisualFeedback();
}
private void UpdateVisualFeedback()
{
if (isInTractionMode && isCutting)
{
// 原始小幅震动
Vector2 baseShake = Random.insideUnitCircle * shakeAmount;
shakeOffset = (Vector3)baseShake;
transform.position = targetPosition + shakeOffset;
// 根据震动幅度控制灯光强度
if (cutLight != null)
{
cutLight.enabled = true;
float intensity = shakeOffset.magnitude / shakeAmount; // 得到 [0,1] 比例
cutLight.intensity = intensity * lightMaxIntensity;
}
// if (sparkVFX != null)
// {
// sparkVFX.SendEvent("OnPlay"); // 这里的 "OnBurst" 是你在VFX Graph里定义的事件名,需要一致
// }
}
else
{
shakeOffset = Vector3.zero;
if (isInTractionMode)
{
transform.position = targetPosition;
}
if (cutLight != null)
{
cutLight.intensity = 0f;
cutLight.enabled = false;
}
// if (sparkVFX != null)
// {
// sparkVFX.SendEvent("OnStop"); // 这里的 "OnBurst" 是你在VFX Graph里定义的事件名,需要一致
// }
}
}
private void LoadEdgePointsFromSprite()
{
edgePoints = new List<Vector2>();
originalEdgePoints = new List<Vector2>(); // 初始化原始边缘点列表
originalEdgePoints = new List<Vector2>();
if (targetSpriteRenderer == null)
{
Debug.LogError("targetSpriteRenderer 为空");
return;
}
List<Vector2> shapePoints = new List<Vector2>();
targetSpriteRenderer.sprite.GetPhysicsShape(0, shapePoints);
@@ -103,32 +156,26 @@ public class GearFollower : MonoBehaviour
Debug.LogError("目标Sprite没有物理形状点");
return;
}
float desiredSegmentLength = 0.1f;
edgePoints.Clear();
originalEdgePoints.Clear();
// 计算中心点
Vector2 center = Vector2.zero;
foreach (Vector2 point in shapePoints)
{
center += point;
}
center /= shapePoints.Count;
for (int i = 0; i < shapePoints.Count; i++)
{
Vector2 p1 = targetSpriteRenderer.transform.TransformPoint(shapePoints[i]);
Vector2 p2 = targetSpriteRenderer.transform.TransformPoint(shapePoints[(i + 1) % shapePoints.Count]);
// 计算缩放后的点
Vector2 scaledP1 = center + (p1 - center) * edgePointsScale;
Vector2 scaledP2 = center + (p2 - center) * edgePointsScale;
float segmentLength = Vector2.Distance(scaledP1, scaledP2);
int steps = Mathf.Max(1, Mathf.CeilToInt(segmentLength / desiredSegmentLength));
for (int s = 0; s < steps; s++)
{
float t = (float)s / steps;
@@ -144,12 +191,11 @@ public class GearFollower : MonoBehaviour
edgePoints.Add(edgePoints[0]);
originalEdgePoints.Add(originalEdgePoints[0]);
}
Debug.Log($"边缘点数量:{edgePoints.Count}");
}
private void UpdateFollowState(Vector2 mousePos)
{
transform.position = mousePos;
isInTractionMode = false;
int nearestIndex = FindNearestEdgePointIndex(mousePos, out float dist);
if (dist < snapDistance)
@@ -164,27 +210,28 @@ public class GearFollower : MonoBehaviour
tractionDirection = (distToNext < distToPrev) ? 1 : -1;
transform.position = edgePoints[currentEdgeIndex];
targetPosition = edgePoints[currentEdgeIndex];
transform.position = targetPosition;
currentState = State.Traction;
isInTractionMode = true;
}
}
private void UpdateTractionState(Vector2 mousePos)
{
Vector2 gearPos = transform.position;
Vector2 gearPos = transform.position - shakeOffset;
if (Vector2.Distance(mousePos, gearPos) > detachDistance)
{
currentState = State.Follow;
isInTractionMode = false;
EndCutting();
return;
}
if (!Input.GetMouseButton(0))
{
EndCutting();
return;
}
if (!isCutting)
{
StartCutting();
@@ -225,7 +272,7 @@ public class GearFollower : MonoBehaviour
if (distance <= maxStep)
{
transform.position = targetPoint;
targetPosition = targetPoint;
if (Vector2.Distance(targetPoint, to) < 0.01f)
{
@@ -234,19 +281,36 @@ public class GearFollower : MonoBehaviour
}
else
{
transform.position += (Vector3)(moveDir.normalized * maxStep);
targetPosition = (Vector3)gearPos + (Vector3)(moveDir.normalized * maxStep);
}
transform.position = targetPosition + shakeOffset;
// 使用原始边缘点来记录切割线
Vector2 originalFrom = originalEdgePoints[currentEdgeIndex];
Vector2 originalTo = originalEdgePoints[nextIndex];
Vector2 originalTargetPoint = GetClosestPointOnSegment(originalFrom, originalTo, transform.position);
Vector2 originalTargetPoint = GetClosestPointOnSegment(originalFrom, originalTo, transform.position - shakeOffset);
// 记录切割点(带噪声模拟毛糙)
Vector3 noisyPoint = originalTargetPoint;
noisyPoint.x += Random.Range(-noiseAmount, noiseAmount);
noisyPoint.y += Random.Range(-noiseAmount, noiseAmount);
AddCutPoint(noisyPoint);
if (sparkVFX != null)
{
// 计算从切割点到目标精灵中心的向量
Vector2 center = targetSpriteRenderer.transform.position;
Vector2 toCenter = center - (Vector2)originalTargetPoint;
// 计算法线方向(垂直于切割方向)
Vector2 normal = Vector2.Perpendicular(moveDir.normalized);
// 根据切割方向决定法线方向
if (tractionDirection > 0)
{
normal = -normal;
}
Vector3 velocity = (Vector3)normal * 10f;
sparkVFX.SetVector3("Initial Velocity1", velocity);
}
}
private void StartCutting()
@@ -257,15 +321,27 @@ public class GearFollower : MonoBehaviour
{
cutLineRenderer.positionCount = 0;
}
if (sparkVFX != null)
{
sparkVFX.Play();
}
}
private void AddCutPoint(Vector3 point)
{
if (timedCutPoints.Count == 0 || Vector3.Distance(timedCutPoints[timedCutPoints.Count - 1].position, point) > 0.05f)
{
timedCutPoints.Add(new TimedPoint(point, Time.time));
// 立即创建片段
// 更新光照位置到最新切点
if (cutLight != null)
{
cutLight.transform.position = point;
}
// 把火花特效位置设置到当前切割点
if (sparkVFX != null)
{
sparkVFX.transform.position = point;
}
if (timedCutPoints.Count >= 2)
{
Vector3 prev = timedCutPoints[timedCutPoints.Count - 2].position;
@@ -289,7 +365,6 @@ public class GearFollower : MonoBehaviour
}
else
{
// 这里的点还没到延迟时间,不显示
}
}
@@ -301,7 +376,11 @@ public class GearFollower : MonoBehaviour
private void EndCutting()
{
isCutting = false;
// 这里可以添加切割结束后的淡出效果等
if (sparkVFX != null)
{
sparkVFX.Stop();
}
}
private int FindNearestEdgePointIndex(Vector2 pos, out float minDist)
{
@@ -319,7 +398,6 @@ public class GearFollower : MonoBehaviour
}
return nearestIndex;
}
private Vector2 GetClosestPointOnSegment(Vector2 a, Vector2 b, Vector2 p)
{
Vector2 ab = b - a;