This commit is contained in:
2025-05-19 21:27:58 +08:00
parent 34aa1b7bf4
commit cfe8f8e5c1
14 changed files with 4761 additions and 1300 deletions
+264
View File
@@ -0,0 +1,264 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &6388638343240283516
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3356305640573621166}
- component: {fileID: 593249056707730865}
- component: {fileID: 699543252252589786}
m_Layer: 0
m_Name: CutWheel
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3356305640573621166
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6388638343240283516}
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.5038, y: 1.5038, z: 1.5038}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6008269348764545595}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &593249056707730865
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6388638343240283516}
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!114 &699543252252589786
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6388638343240283516}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 07505bc4dd78e1e4c87141a1d061dd10, type: 3}
m_Name:
m_EditorClassIdentifier:
targetSpriteRenderer: {fileID: 0}
snapDistance: 0.3
detachDistance: 5
tractionSpeed: 1
edgePointsScale: 1.15
cutLineRenderer: {fileID: 0}
cutLineWidth: 0.1
noiseAmount: 0.05
segmentDuration: 4
cutLight: {fileID: 0}
lightPulseSpeed: 5
lightMaxIntensity: 2.5
shakeAmount: 0.045
sparkVFX: {fileID: 0}
maxEmissionRate: 50
emissionChangeSpeed: 100
cutCompletionThreshold: 0.95
minCutLength: 0.95
targetShakeAmount: 0.02
cutCompleteTiltAngle: 15
cutCompleteOffset: 0.2
cutCompleteScale: 1.2
fadeOutDuration: 1
cutCompleteDelay: 1
scaleUpDuration: 1
fadeOutDelay: 1
cutCompleteSound: {fileID: 0}
cutLineDelay: 3
--- !u!1 &8809369251187030916
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6008269348764545595}
- component: {fileID: 4944136579933455690}
m_Layer: 0
m_Name: Trail
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &6008269348764545595
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8809369251187030916}
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: 3356305640573621166}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!96 &4944136579933455690
TrailRenderer:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8809369251187030916}
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
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 316c061f3e3c69c439772d3b781e2c74
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+288
View File
@@ -0,0 +1,288 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1407574319850825462
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2870149913291486743}
- component: {fileID: 7471162730381996286}
m_Layer: 0
m_Name: Module Pic
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2870149913291486743
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1407574319850825462}
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: 4931539659539251703}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &7471162730381996286
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1407574319850825462}
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: 1134468525
m_SortingLayer: 10
m_SortingOrder: 5
m_Sprite: {fileID: -1886049787586984079, guid: 2338fddc038248b4b934bef72357cd13, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1.37, y: 1.35}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &4598702815300347941
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4931539659539251703}
m_Layer: 0
m_Name: EmoCut
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4931539659539251703
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4598702815300347941}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -28.77, y: 2.076, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2870149913291486743}
- {fileID: 2324556327892023004}
- {fileID: 8138227362824298423}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6506281333571668726
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2324556327892023004}
- component: {fileID: 362498480065817822}
m_Layer: 0
m_Name: Socket
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2324556327892023004
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6506281333571668726}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.005, y: -0.011, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4931539659539251703}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &362498480065817822
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6506281333571668726}
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: 1134468525
m_SortingLayer: 10
m_SortingOrder: 6
m_Sprite: {fileID: 3822937466802405960, guid: fd04c28739017964789d58d573f9fabb, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 1, y: 1}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 1
--- !u!1 &6655640344314469856
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8138227362824298423}
- component: {fileID: 2792777517965035838}
m_Layer: 0
m_Name: 'EMOT '
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8138227362824298423
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6655640344314469856}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0.47267628, y: 0.06120944, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 4931539659539251703}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &2792777517965035838
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6655640344314469856}
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: 352170d4b370c3143ad956fb754fc87f, 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: 1134468525
m_SortingLayer: 10
m_SortingOrder: 20
m_Sprite: {fileID: -50090516736836665, guid: 2338fddc038248b4b934bef72357cd13, 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.12093023, y: 0.4511628}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 17da313c624196048afe0f72b1c90cd0
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+83 -261
View File
@@ -207,142 +207,6 @@ SpriteRenderer:
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!1 &173508913
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 173508914}
- component: {fileID: 173508915}
m_Layer: 0
m_Name: Trail
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &173508914
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 173508913}
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: 1568743344}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!96 &173508915
TrailRenderer:
serializedVersion: 3
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 173508913}
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!1 &270210637
GameObject:
m_ObjectHideFlags: 0
@@ -744,7 +608,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!4 &613029026
Transform:
m_ObjectHideFlags: 0
@@ -754,8 +618,8 @@ Transform:
m_GameObject: {fileID: 613029025}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0.4, y: 8.88, z: -0.05975556}
m_LocalScale: {x: 0.90479714, y: 0.90479714, z: 0.90479714}
m_LocalPosition: {x: 0.4, y: 9.32, z: -0.05975556}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 270210638}
@@ -780,10 +644,10 @@ MonoBehaviour:
leftClaw: {fileID: 1950314422}
rightClaw: {fileID: 1450129041}
moveSpeed: 5
scaleSpeed: 2
minScale: 0.8
grabOffset: 0.1
clawExtendSpeed: 2
scaleSpeed: 0.5
minScale: 0.9
grabOffset: 0
clawExtendSpeed: 0.6
target: {fileID: 2110358529}
--- !u!1 &619394800
GameObject:
@@ -2358,7 +2222,7 @@ Transform:
m_GameObject: {fileID: 1450129040}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 1.3, y: 0.68000126, z: 0}
m_LocalPosition: {x: 1.6, y: 0.68000126, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@@ -2366,121 +2230,6 @@ Transform:
- {fileID: 839779015}
m_Father: {fileID: 613029026}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1568743342
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1568743344}
- component: {fileID: 1568743343}
- component: {fileID: 1568743345}
m_Layer: 0
m_Name: "\u523B\u5F55\u9F7F\u8F6E"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!212 &1568743343
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1568743342}
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!4 &1568743344
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1568743342}
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.5038, y: 1.5038, z: 1.5038}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 173508914}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1568743345
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1568743342}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 07505bc4dd78e1e4c87141a1d061dd10, type: 3}
m_Name:
m_EditorClassIdentifier:
targetSpriteRenderer: {fileID: 2110358530}
snapDistance: 0.3
detachDistance: 10
tractionSpeed: 1
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
@@ -2811,7 +2560,7 @@ Transform:
m_GameObject: {fileID: 1950314421}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -1.3, y: 0.68000126, z: 0}
m_LocalPosition: {x: -1.69, y: 0.68000126, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@@ -3154,6 +2903,79 @@ LineRenderer:
m_UseWorldSpace: 1
m_Loop: 0
m_ApplyActiveColorSpace: 1
--- !u!1001 &4180026279802710596
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 699543252252589786, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: cutLight
value:
objectReference: {fileID: 1143393751}
- target: {fileID: 699543252252589786, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: sparkVFX
value:
objectReference: {fileID: 1390739321}
- target: {fileID: 699543252252589786, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: cutLineRenderer
value:
objectReference: {fileID: 2135342731}
- target: {fileID: 699543252252589786, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: targetSpriteRenderer
value:
objectReference: {fileID: 2110358530}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalPosition.x
value: 3.66
objectReference: {fileID: 0}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalPosition.y
value: 0.31
objectReference: {fileID: 0}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3356305640573621166, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6388638343240283516, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
propertyPath: m_Name
value: CutWheel
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 316c061f3e3c69c439772d3b781e2c74, type: 3}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
@@ -3161,7 +2983,7 @@ SceneRoots:
- {fileID: 519420032}
- {fileID: 619394802}
- {fileID: 776759389}
- {fileID: 1568743344}
- {fileID: 4180026279802710596}
- {fileID: 1598025876}
- {fileID: 1599995100}
- {fileID: 2135342730}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -56,7 +56,7 @@ namespace AibisDream.FixSystem
{
if (_cutting && Input.GetMouseButton(0))
{
OnCut();
//OnCut();
}
}
@@ -112,66 +112,71 @@ namespace AibisDream.FixSystem
#endregion
#region
public void EnableCut()
public SpriteRenderer GetSpriteRenderer()
{
// 打开或获取CutLine
ShowCutLine();
_cutLine.OnCuttingDown += OnCuttingDown;
_cutting = true;
return _targetSpriteRenderer;
}
// public void EnableCut()
// {
// // 打开或获取CutLine
// ShowCutLine();
// _cutLine.OnCuttingDown += OnCuttingDown;
// _cutting = true;
EnumEventSystem.Global.Send(EventEnum.CutStart);
}
// EnumEventSystem.Global.Send(EventEnum.CutStart);
// }
private void OnCut()
{
Vector2 mousePos = CommonUtil.GetMouseWorldPos(Input.mousePosition);
_cutLine.DetectLineClick(mousePos, clickRadius);
}
// private void OnCut()
// {
// Vector2 mousePos = CommonUtil.GetMouseWorldPos(Input.mousePosition);
// _cutLine.DetectLineClick(mousePos, clickRadius);
// }
private void OnCuttingDown()
{
_cutLine.OnCuttingDown -= OnCuttingDown;
_cutting = false;
// 模块脱落
_cutLine.HideLine();
_bodyModuleSystem.RemoveModule(this);
ActionKit.Sequence()
.Delay(0.8f)
.DOTween(() => transform.DOMoveY(ConstRef.TweenEndY,
(transform.position.y - ConstRef.TweenEndY) / (ConstRef.FallSpeed * 0.6f))
.SetEase(Ease.InQuad))
.Callback(() => DialogController.Instance?.StartDialogNode($"{data.moduleName}CutDown"))
.Callback(() => EnumEventSystem.Global.Send(EventEnum.CutEnd))
.Start(this, () => Destroy(gameObject));
}
// private void OnCuttingDown()
// {
// _cutLine.OnCuttingDown -= OnCuttingDown;
// _cutting = false;
// // 模块脱落
// _cutLine.HideLine();
// _bodyModuleSystem.RemoveModule(this);
// ActionKit.Sequence()
// .Delay(0.8f)
// .DOTween(() => transform.DOMoveY(ConstRef.TweenEndY,
// (transform.position.y - ConstRef.TweenEndY) / (ConstRef.FallSpeed * 0.6f))
// .SetEase(Ease.InQuad))
// .Callback(() => DialogController.Instance?.StartDialogNode($"{data.moduleName}CutDown"))
// .Callback(() => EnumEventSystem.Global.Send(EventEnum.CutEnd))
// .Start(this, () => Destroy(gameObject));
// }
private void ShowCutLine()
{
// 切割线不存在,就新建一个
if (!_cutLine)
{
var prefab = ResourceKit.LoadAssetSync<GameObject>(ConstRef.CutLinePrefabName);
var cutLineObj = Instantiate(prefab, transform);
_cutLine = cutLineObj.GetComponent<CutLine>();
}
// private void ShowCutLine()
// {
// // 切割线不存在,就新建一个
// if (!_cutLine)
// {
// var prefab = ResourceKit.LoadAssetSync<GameObject>(ConstRef.CutLinePrefabName);
// var cutLineObj = Instantiate(prefab, transform);
// _cutLine = cutLineObj.GetComponent<CutLine>();
// }
// 对切割线进行初始化
var shapePoints = new List<Vector2>();
_targetSpriteRenderer.sprite.GetPhysicsShape(0, shapePoints);
if (shapePoints.Count <= 0)
{
Debug.LogWarning($"{name} has no shape");
return;
}
// // 对切割线进行初始化
// var shapePoints = new List<Vector2>();
// _targetSpriteRenderer.sprite.GetPhysicsShape(0, shapePoints);
// if (shapePoints.Count <= 0)
// {
// Debug.LogWarning($"{name} has no shape");
// return;
// }
// 本地坐标转世界坐标
var shapePointsV3 = shapePoints
.Select(item => _targetSpriteRenderer.transform.TransformPoint(item))
.ToList();
// // 本地坐标转世界坐标
// var shapePointsV3 = shapePoints
// .Select(item => _targetSpriteRenderer.transform.TransformPoint(item))
// .ToList();
_cutLine.Init(shapePointsV3, clickRadius);
}
// _cutLine.Init(shapePointsV3, clickRadius);
// }
#endregion
}
@@ -10,13 +10,13 @@ namespace AibisDream
private static BodyModuleSystem BodyModuleSystem => FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
private static PunchTapeSystem PunchTapeSystem => FixSystemCenter.SystemDic.Get<PunchTapeSystem>();
[YarnCommand("enable_cut")]
public static void EnableCut(string moduleName)
{
Reset_Plug();
var cutModule = BodyModuleSystem.FindBodyModuleByName(moduleName);
cutModule.EnableCut();
}
// [YarnCommand("enable_cut")]
// public static void EnableCut(string moduleName)
// {
// Reset_Plug();
// var cutModule = BodyModuleSystem.FindBodyModuleByName(moduleName);
// cutModule.EnableCut();
// }
[YarnCommand("Reset_Plug")]
public static void Reset_Plug()
{
@@ -64,18 +64,23 @@ public class ClawMachineController : MonoBehaviour
// 3. 下降
yield return Descend();
yield return new WaitForSeconds(0.5f);
// 4. 再次调整抓钩
//yield return AdjustClawsForGrab();
yield return AdjustClawsForGrab();
// 5. 抓取目标
//currentTarget.SetParent(transform);
currentTarget.SetParent(transform);
yield return new WaitForSeconds(0.5f);
// 6. 上升
//yield return Ascend();
yield return Ascend();
yield return new WaitForSeconds(0.5f);
// 7. 返回初始位置
//yield return ReturnToInitialPosition();
yield return ReturnToInitialPosition();
isGrabbing = false;
isMoving = false;
@@ -83,6 +88,14 @@ public class ClawMachineController : MonoBehaviour
private IEnumerator MoveToPosition(Vector3 targetPos)
{
if (currentTarget == null) yield break;
SpriteRenderer targetSprite = currentTarget.GetComponent<SpriteRenderer>();
if (targetSprite == null) yield break;
float targetLeft = targetSprite.bounds.min.x;
float targetRight = targetSprite.bounds.max.x;
targetPos.x=(targetLeft+targetRight)/2;
float distance = Vector3.Distance(transform.position, targetPos);
float duration = distance / moveSpeed;
@@ -97,24 +110,22 @@ public class ClawMachineController : MonoBehaviour
SpriteRenderer targetSprite = currentTarget.GetComponent<SpriteRenderer>();
if (targetSprite == null) yield break;
// 计算目标上边沿位置
// 计算目标边界
float targetTop = targetSprite.bounds.max.y;
float currentTop = topEdge.position.y;
float targetLeft = targetSprite.bounds.min.x;
// 计算需要移动的距离
float moveDistance = targetTop - currentTop + grabOffset;
// 调整位置使上边沿接近目标上边沿
float topOffset = targetTop - topEdge.position.y + 0.5f; // 确保上边沿高于目标
float leftOffset = leftClaw.position.x -(targetLeft-0.5f); // 确保左爪超出目标左边界
// 调整位置
Vector3 newPos = transform.position;
newPos.y += moveDistance;
newPos.y += topOffset;
yield return MoveToPosition(newPos);
// 调整爪子位置
float targetWidth = targetSprite.bounds.size.x;
float currentWidth = Vector3.Distance(leftClaw.position, rightClaw.position);
// 计算需要的爪子伸缩量
float extendAmount = (targetWidth + grabOffset * 2) - currentWidth;
float extendAmount=leftOffset;
yield return ExtendClaws(extendAmount);
}
@@ -134,11 +145,22 @@ public class ClawMachineController : MonoBehaviour
SpriteRenderer targetSprite = currentTarget.GetComponent<SpriteRenderer>();
if (targetSprite == null) yield break;
// 计算目标宽度
float targetWidth = targetSprite.bounds.size.x;
// 计算目标边界
float targetTop = targetSprite.bounds.max.y;
float targetLeft = targetSprite.bounds.min.x;
// 调整爪子位置以卡住边缘
float extendAmount = targetWidth + grabOffset;
// float topOffset = targetTop - topEdge.position.y + grabOffset; // 确保上边沿高于目标
float leftOffset = leftClaw.position.x -(targetLeft-grabOffset); // 确保左爪超出目标左边界
// 调整位置
// Vector3 newPos = transform.position;
// newPos.y += topOffset;
// yield return MoveToPosition(newPos);
// 调整爪子位置
float extendAmount=leftOffset;
yield return ExtendClaws(extendAmount);
}
@@ -147,10 +169,10 @@ public class ClawMachineController : MonoBehaviour
Vector3 leftTarget = leftClaw.localPosition;
Vector3 rightTarget = rightClaw.localPosition;
leftTarget.x -= amount / 2;
rightTarget.x += amount / 2;
leftTarget.x -= amount;
rightTarget.x += amount;
float duration = amount / clawExtendSpeed;
float duration = Mathf.Abs(amount) / clawExtendSpeed;
leftClaw.DOLocalMove(leftTarget, duration).SetEase(Ease.Linear);
rightClaw.DOLocalMove(rightTarget, duration).SetEase(Ease.Linear);
@@ -3,6 +3,7 @@ using Shapes;
using UnityEngine;
using UnityEngine.Rendering.Universal;
using UnityEngine.VFX;
using DG.Tweening;
public class GearFollower : MonoBehaviour
{
@@ -29,6 +30,31 @@ public class GearFollower : MonoBehaviour
public float maxEmissionRate = 50f; // 最大发射速率
public float emissionChangeSpeed = 100f; // 发射速率变化速度
[Header("切割完成效果")]
public float cutCompletionThreshold = 0.95f; // 切割完成阈值(切割路径占边缘的比例)
public float minCutLength = 0.5f; // 最小切割长度(相对于总长度的比例)
public float targetShakeAmount = 0.02f; // 目标抖动幅度
public float cutCompleteTiltAngle = 15f; // 切割完成后的倾斜角度
public float cutCompleteOffset = 0.2f; // 切割完成后的位移
public float cutCompleteScale = 1.2f; // 切割完成后的放大倍数
public float fadeOutDuration = 1f; // 淡出持续时间
public float cutCompleteDelay = 1f; // 切割完成后的延迟时间
public float scaleUpDuration = 1f; // 放大动画持续时间
public float fadeOutDelay = 1f; // 淡出前的延迟时间
public AudioClip cutCompleteSound; // 切割完成音效
private float totalEdgeLength = 0f; // 总边缘长度
private float cutLength = 0f; // 已切割长度
private bool isCutComplete = false;
private bool isFadingOut = false;
private float fadeOutTimer = 0f;
private Vector3 originalTargetPosition;
private Quaternion originalTargetRotation;
private Vector3 originalTargetScale;
private AudioSource audioSource;
private Sequence cutCompleteSequence; // DOTween序列
private HashSet<int> cutEdgeIndices = new HashSet<int>(); // 记录已切割的边缘点索引
private float currentEmissionRate = 0f;
private Vector3 originalLocalPosition;
private List<Vector2> edgePoints;
@@ -62,6 +88,7 @@ public class GearFollower : MonoBehaviour
{
mainCamera = Camera.main;
LoadEdgePointsFromSprite();
CalculateTotalEdgeLength();
if (cutLineRenderer != null)
{
cutLineRenderer.positionCount = 0;
@@ -75,6 +102,19 @@ public class GearFollower : MonoBehaviour
cutLight.intensity = 0f;
cutLight.enabled = false;
}
// 初始化目标相关变量
if (targetSpriteRenderer != null)
{
originalTargetPosition = targetSpriteRenderer.transform.position;
originalTargetRotation = targetSpriteRenderer.transform.rotation;
originalTargetScale = targetSpriteRenderer.transform.localScale;
}
// 添加音频源组件
audioSource = gameObject.AddComponent<AudioSource>();
audioSource.playOnAwake = false;
audioSource.spatialBlend = 0f; // 2D音效
}
void Update()
{
@@ -105,6 +145,13 @@ public class GearFollower : MonoBehaviour
shakeOffset = (Vector3)baseShake;
transform.position = targetPosition + shakeOffset;
// 目标抖动
if (targetSpriteRenderer != null && !isCutComplete)
{
Vector2 targetShake = Random.insideUnitCircle * targetShakeAmount;
targetSpriteRenderer.transform.position = originalTargetPosition + (Vector3)targetShake;
}
// 根据震动幅度控制灯光强度
if (cutLight != null)
{
@@ -112,10 +159,6 @@ public class GearFollower : MonoBehaviour
float intensity = shakeOffset.magnitude / shakeAmount; // 得到 [0,1] 比例
cutLight.intensity = intensity * lightMaxIntensity;
}
// if (sparkVFX != null)
// {
// sparkVFX.SendEvent("OnPlay"); // 这里的 "OnBurst" 是你在VFX Graph里定义的事件名,需要一致
// }
}
else
{
@@ -131,10 +174,39 @@ public class GearFollower : MonoBehaviour
cutLight.intensity = 0f;
cutLight.enabled = false;
}
// if (sparkVFX != null)
// {
// sparkVFX.SendEvent("OnStop"); // 这里的 "OnBurst" 是你在VFX Graph里定义的事件名,需要一致
// }
}
// 处理淡出效果
if (isFadingOut)
{
fadeOutTimer += Time.deltaTime;
float alpha = 1f - (fadeOutTimer / fadeOutDuration);
if (targetSpriteRenderer != null)
{
Color color = targetSpriteRenderer.color;
color.a = alpha;
targetSpriteRenderer.color = color;
}
// 齿轮也淡出
SpriteRenderer gearRenderer = GetComponent<SpriteRenderer>();
if (gearRenderer != null)
{
Color gearColor = gearRenderer.color;
gearColor.a = alpha;
gearRenderer.color = gearColor;
}
if (fadeOutTimer >= fadeOutDuration)
{
// 淡出完成后销毁物体
Destroy(gameObject);
if (targetSpriteRenderer != null)
{
Destroy(targetSpriteRenderer.gameObject);
}
}
}
}
@@ -273,6 +345,7 @@ public class GearFollower : MonoBehaviour
if (distance <= maxStep)
{
targetPosition = targetPoint;
UpdateCutProgress(from, targetPoint); // 更新切割进度
if (Vector2.Distance(targetPoint, to) < 0.01f)
{
@@ -428,4 +501,136 @@ public class GearFollower : MonoBehaviour
var segmentController = segObj.AddComponent<HeatLineSegmentController>();
segmentController.duration = segmentDuration;
}
private void CalculateTotalEdgeLength()
{
totalEdgeLength = 0f;
for (int i = 0; i < edgePoints.Count - 1; i++)
{
totalEdgeLength += Vector2.Distance(edgePoints[i], edgePoints[i + 1]);
}
}
private void UpdateCutProgress(Vector2 from, Vector2 to)
{
cutLength += Vector2.Distance(from, to);
float progress = cutLength / totalEdgeLength;
// 记录已切割的边缘点
cutEdgeIndices.Add(currentEdgeIndex);
// 检查是否满足切割完成条件
if (!isCutComplete && progress >= cutCompletionThreshold && progress >= minCutLength)
{
// 检查是否形成了连续的切割路径
bool hasContinuousCut = CheckContinuousCut();
if (hasContinuousCut)
{
isCutComplete = true;
OnCutComplete();
}
}
}
private bool CheckContinuousCut()
{
if (cutEdgeIndices.Count < 2) return false;
// 将索引转换为有序列表
List<int> sortedIndices = new List<int>(cutEdgeIndices);
sortedIndices.Sort();
// 检查是否有连续的切割点
int continuousCount = 1;
int maxContinuousCount = 1;
for (int i = 1; i < sortedIndices.Count; i++)
{
if (sortedIndices[i] == sortedIndices[i - 1] + 1)
{
continuousCount++;
maxContinuousCount = Mathf.Max(maxContinuousCount, continuousCount);
}
else
{
continuousCount = 1;
}
}
// 如果连续切割点的数量超过总点数的50%,认为形成了有效的切割路径
return maxContinuousCount >= edgePoints.Count * 0.5f;
}
private void OnCutComplete()
{
// 停止切割状态
isCutting = false;
isInTractionMode = false;
enabled = false;
// 清理特效
if (cutLight != null)
{
cutLight.enabled = false;
}
if (sparkVFX != null)
{
sparkVFX.Stop();
}
if (cutLineRenderer != null)
{
cutLineRenderer.positionCount = 0;
}
timedCutPoints.Clear();
// 目标倾斜和位移
if (targetSpriteRenderer != null)
{
// 计算随机方向
float randomAngle = Random.Range(-cutCompleteTiltAngle, cutCompleteTiltAngle);
Vector2 randomOffset = Random.insideUnitCircle * cutCompleteOffset;
// 立即应用倾斜和位移
targetSpriteRenderer.transform.rotation = Quaternion.Euler(0, 0, randomAngle);
targetSpriteRenderer.transform.position = originalTargetPosition + (Vector3)randomOffset;
// 创建动画序列
cutCompleteSequence = DOTween.Sequence();
// 等待一段时间后开始放大
cutCompleteSequence.AppendInterval(cutCompleteDelay);
cutCompleteSequence.Append(targetSpriteRenderer.transform.DOScale(originalTargetScale * cutCompleteScale, scaleUpDuration)
.SetEase(Ease.OutQuad));
// 等待一段时间后开始淡出
cutCompleteSequence.AppendInterval(fadeOutDelay);
cutCompleteSequence.Append(targetSpriteRenderer.DOFade(0f, fadeOutDuration));
// 齿轮也同时淡出
SpriteRenderer gearRenderer = GetComponent<SpriteRenderer>();
if (gearRenderer != null)
{
cutCompleteSequence.Join(gearRenderer.DOFade(0f, fadeOutDuration));
}
// 动画完成后销毁物体
cutCompleteSequence.OnComplete(() => {
Destroy(gameObject);
if (targetSpriteRenderer != null)
{
Destroy(targetSpriteRenderer.gameObject);
}
});
}
}
private void OnDestroy()
{
// 清理DOTween序列
if (cutCompleteSequence != null)
{
cutCompleteSequence.Kill();
}
}
}
@@ -485,6 +485,7 @@ namespace AibisDream.FixSystem
public IEnumerator Enter()
{
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
var openSystem = FixSystemCenter.SystemDic.Get<OpenSystem>();
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
{
var bodyModule = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
@@ -493,7 +494,8 @@ namespace AibisDream.FixSystem
}
bodyModuleSystem.CableSystem.ResetPlug();
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutEmo);
bodyModuleSystem.FindBodyModuleByName("Emo").EnableCut();
openSystem.EnableCut(bodyModuleSystem.FindBodyModuleByName("Emo"));
// bodyModuleSystem.FindBodyModuleByName("Emo").EnableCut();
}
public IEnumerator Exit()
@@ -514,6 +516,7 @@ namespace AibisDream.FixSystem
public IEnumerator Enter()
{
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
var openSystem = FixSystemCenter.SystemDic.Get<OpenSystem>();
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
{
var bodyModule = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
@@ -522,7 +525,8 @@ namespace AibisDream.FixSystem
}
bodyModuleSystem.CableSystem.ResetPlug();
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutMemory);
bodyModuleSystem.FindBodyModuleByName("Memory").EnableCut();
openSystem.EnableCut(bodyModuleSystem.FindBodyModuleByName("Memory"));
// bodyModuleSystem.FindBodyModuleByName("Memory").EnableCut();
}
@@ -552,7 +556,7 @@ namespace AibisDream.FixSystem
}
bodyModuleSystem.CableSystem.ResetPlug();
yield return CameraKit.Instance.SwitchCamera(CameraEnum.CutLogic);
bodyModuleSystem.FindBodyModuleByName("Logic").EnableCut();
// bodyModuleSystem.FindBodyModuleByName("Logic").EnableCut();
}
public IEnumerator Exit()
+11 -1
View File
@@ -16,6 +16,7 @@ namespace AibisDream
public SpriteDeepIn deepIn;
public LightRoom lightRoom;
public GameObject screen;
public GearFollower gearFollower;
private void Awake()
{
@@ -26,9 +27,12 @@ namespace AibisDream
var virtualCam1 = transform.Find("Cut Emo Camera").GetComponent<ICinemachineCamera>();
var virtualCam2 = transform.Find("Cut Memory Camera").GetComponent<ICinemachineCamera>();
var virtualCam3 = transform.Find("Cut Logic Camera").GetComponent<ICinemachineCamera>();
var virtualCam4 = transform.Find("Cut Emo Deep Camera").GetComponent<ICinemachineCamera>();
CameraKit.Instance.RegisterCamera(CameraEnum.CutEmo, virtualCam1);
CameraKit.Instance.RegisterCamera(CameraEnum.CutMemory, virtualCam2);
CameraKit.Instance.RegisterCamera(CameraEnum.CutLogic, virtualCam3);
CameraKit.Instance.RegisterCamera(CameraEnum.CutEmoDeep, virtualCam4);
// 组装
deepInClock.OnClockReached += PlayFadeIn;
@@ -80,8 +84,14 @@ namespace AibisDream
{
DialogController.Instance.StartDialogNode("DeepInEnd");
}
public void EnableCut(BodyModule bodyModule)
{
var spriteRenderer = bodyModule.GetSpriteRenderer();
gearFollower.targetSpriteRenderer = spriteRenderer;
gearFollower.gameObject.SetActive(true);
gearFollower.transform.position = new Vector3(Screen.width / 1.8f, Screen.height / 2f, 0);
}
}
public static class OpenYarnCommand
{
private static OpenSystem OpenSystem => FixSystemCenter.SystemDic.Get<OpenSystem>();
@@ -328,6 +328,7 @@ namespace AibisDream.Framework
Op,
CutEmo,
CutMemory,
CutLogic
CutLogic,
CutEmoDeep
}
}