From 34aa1b7bf4268be256c0f35f2440913c189d06f8 Mon Sep 17 00:00:00 2001 From: bottlefish <781230111@qq.com> Date: Mon, 19 May 2025 16:10:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Scenes/CutTest.unity | 692 ++++++++++++++++++ .../BodyModule/ClawMachineController.cs | 180 +++++ .../BodyModule/ClawMachineController.cs.meta | 11 + 3 files changed, 883 insertions(+) create mode 100644 Assets/Scripts/FixSystemNew/BodyModule/ClawMachineController.cs create mode 100644 Assets/Scripts/FixSystemNew/BodyModule/ClawMachineController.cs.meta diff --git a/Assets/Scenes/CutTest.unity b/Assets/Scenes/CutTest.unity index 52867e724..3dd7370fa 100644 --- a/Assets/Scenes/CutTest.unity +++ b/Assets/Scenes/CutTest.unity @@ -343,6 +343,121 @@ TrailRenderer: m_Autodestruct: 0 m_Emitting: 1 m_ApplyActiveColorSpace: 1 +--- !u!1 &270210637 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 270210638} + - component: {fileID: 270210639} + m_Layer: 0 + m_Name: Up + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &270210638 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 270210637} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 7.91, z: 0} + m_LocalScale: {x: 0.4, y: 12.909375, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 613029026} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &270210639 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 270210637} + 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: 9 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, 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: 0 +--- !u!1 &481623441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 481623442} + m_Layer: 0 + m_Name: Init + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &481623442 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 481623441} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.45, y: 9.05, z: -0.05975556} + 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 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -480,6 +595,90 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &568929186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 568929187} + - component: {fileID: 568929188} + m_Layer: 0 + m_Name: part1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &568929187 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568929186} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.56, y: 0.8, z: 0} + m_LocalScale: {x: 1.5, y: 0.4, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1450129041} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &568929188 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 568929186} + 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: 9 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, 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: 0 --- !u!1 &606796328 GameObject: m_ObjectHideFlags: 0 @@ -529,6 +728,63 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &613029025 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 613029026} + - component: {fileID: 613029027} + m_Layer: 0 + m_Name: Body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &613029026 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 270210638} + - {fileID: 1419843343} + - {fileID: 1950314422} + - {fileID: 1450129041} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &613029027 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 613029025} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3bf3dc1f81a3a614bb15b4464058b2db, type: 3} + m_Name: + m_EditorClassIdentifier: + topEdge: {fileID: 1419843343} + leftClaw: {fileID: 1950314422} + rightClaw: {fileID: 1450129041} + moveSpeed: 5 + scaleSpeed: 2 + minScale: 0.8 + grabOffset: 0.1 + clawExtendSpeed: 2 + target: {fileID: 2110358529} --- !u!1 &619394800 GameObject: m_ObjectHideFlags: 0 @@ -1354,6 +1610,174 @@ Material: - _WorldTilingOffset: {r: 0, g: 0, b: 0, a: 0} - _WorldTilingScale: {r: 1, g: 1, b: 0, a: 0} m_BuildTextureStacks: [] +--- !u!1 &839779014 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 839779015} + - component: {fileID: 839779016} + m_Layer: 0 + m_Name: part1 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &839779015 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 839779014} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.5, z: 0} + m_LocalScale: {x: 0.4, y: 3, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1450129041} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &839779016 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 839779014} + 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: 9 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, 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: 0 +--- !u!1 &918283706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 918283707} + - component: {fileID: 918283708} + m_Layer: 0 + m_Name: part1 (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &918283707 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 918283706} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: -0.5, z: 0} + m_LocalScale: {x: 0.4, y: 3, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1950314422} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &918283708 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 918283706} + 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: 9 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, 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: 0 --- !u!1 &1076119583 GameObject: m_ObjectHideFlags: 0 @@ -1550,6 +1974,90 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 073797afb82c5a1438f328866b10b3f0, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1259337034 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1259337035} + - component: {fileID: 1259337036} + m_Layer: 0 + m_Name: part1 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1259337035 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1259337034} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.56, y: 0.8, z: 0} + m_LocalScale: {x: 1.5, y: 0.4, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1950314422} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1259337036 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1259337034} + 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: 9 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, 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: 0 --- !u!1 &1390739319 GameObject: m_ObjectHideFlags: 0 @@ -1741,6 +2249,123 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1419843342 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1419843343} + - component: {fileID: 1419843344} + m_Layer: 0 + m_Name: Down + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1419843343 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419843342} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1.4800012, z: 0} + m_LocalScale: {x: 1.5, y: 0.4, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 613029026} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1419843344 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1419843342} + 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: 9 + m_Sprite: {fileID: 7482667652216324306, guid: 311925a002f4447b3a28927169b83ea6, 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: 0 +--- !u!1 &1450129040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1450129041} + m_Layer: 0 + m_Name: RightClaw + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1450129041 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + 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_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 568929187} + - {fileID: 839779015} + m_Father: {fileID: 613029026} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1568743342 GameObject: m_ObjectHideFlags: 0 @@ -2161,6 +2786,70 @@ SpriteRenderer: m_WasSpriteAssigned: 1 m_MaskInteraction: 0 m_SpriteSortPoint: 0 +--- !u!1 &1950314421 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1950314422} + m_Layer: 0 + m_Name: LeftClaw + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1950314422 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + 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_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1259337035} + - {fileID: 918283707} + m_Father: {fileID: 613029026} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1976944949 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1976944951} + m_Layer: 0 + m_Name: ClawController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1976944951 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1976944949} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.23, y: 11.31, z: -0.05975556} + 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 &2110358528 GameObject: m_ObjectHideFlags: 0 @@ -2479,3 +3168,6 @@ SceneRoots: - {fileID: 1737761513} - {fileID: 606796330} - {fileID: 1390739322} + - {fileID: 481623442} + - {fileID: 613029026} + - {fileID: 1976944951} diff --git a/Assets/Scripts/FixSystemNew/BodyModule/ClawMachineController.cs b/Assets/Scripts/FixSystemNew/BodyModule/ClawMachineController.cs new file mode 100644 index 000000000..f49cac70b --- /dev/null +++ b/Assets/Scripts/FixSystemNew/BodyModule/ClawMachineController.cs @@ -0,0 +1,180 @@ +using UnityEngine; +using DG.Tweening; +using System.Collections; + +public class ClawMachineController : MonoBehaviour +{ + [Header("组件引用")] + [SerializeField] private Transform topEdge; // 上边沿 + [SerializeField] private Transform leftClaw; // 左爪 + [SerializeField] private Transform rightClaw; // 右爪 + + [Header("移动参数")] + [SerializeField] private float moveSpeed = 5f; + [SerializeField] private float scaleSpeed = 2f; + [SerializeField] private float minScale = 0.8f; // 下降时的缩放比例 + + [Header("抓取参数")] + [SerializeField] private float grabOffset = 0.1f; // 抓取时的位置偏移 + [SerializeField] private float clawExtendSpeed = 2f; // 爪子伸缩速度 + + [Header("测试")] + public Transform target; + + private Vector3 initialPosition; + private Vector3 initialScale; + private Transform currentTarget; + private bool isGrabbing; + private bool isMoving; + + private void Start() + { + initialPosition = transform.position; + initialScale = transform.localScale; + + } + + private void Update() { + if (Input.GetKeyDown(KeyCode.Space)) + { + GrabTarget(target); + } + } + + public void GrabTarget(Transform target) + { + if (isGrabbing || isMoving) return; + + currentTarget = target; + StartCoroutine(GrabSequence()); + } + + private IEnumerator GrabSequence() + { + isGrabbing = true; + isMoving = true; + + // 1. 移动到目标上方 + Vector3 targetPos = currentTarget.position; + targetPos.x = transform.position.x; + yield return MoveToPosition(targetPos); + + // 2. 调整位置和抓钩 + yield return AdjustPositionAndClaws(); + + // 3. 下降 + yield return Descend(); + + // 4. 再次调整抓钩 + //yield return AdjustClawsForGrab(); + + // 5. 抓取目标 + //currentTarget.SetParent(transform); + + // 6. 上升 + //yield return Ascend(); + + // 7. 返回初始位置 + //yield return ReturnToInitialPosition(); + + isGrabbing = false; + isMoving = false; + } + + private IEnumerator MoveToPosition(Vector3 targetPos) + { + float distance = Vector3.Distance(transform.position, targetPos); + float duration = distance / moveSpeed; + + transform.DOMove(targetPos, duration).SetEase(Ease.Linear); + yield return new WaitForSeconds(duration); + } + + private IEnumerator AdjustPositionAndClaws() + { + if (currentTarget == null) yield break; + + SpriteRenderer targetSprite = currentTarget.GetComponent(); + if (targetSprite == null) yield break; + + // 计算目标上边沿位置 + float targetTop = targetSprite.bounds.max.y; + float currentTop = topEdge.position.y; + + // 计算需要移动的距离 + float moveDistance = targetTop - currentTop + grabOffset; + + // 调整位置使上边沿接近目标上边沿 + Vector3 newPos = transform.position; + newPos.y += moveDistance; + yield return MoveToPosition(newPos); + + // 调整爪子位置 + float targetWidth = targetSprite.bounds.size.x; + float currentWidth = Vector3.Distance(leftClaw.position, rightClaw.position); + + // 计算需要的爪子伸缩量 + float extendAmount = (targetWidth + grabOffset * 2) - currentWidth; + yield return ExtendClaws(extendAmount); + } + + private IEnumerator Descend() + { + Vector3 targetScale = initialScale * minScale; + float duration = (initialScale.x - targetScale.x) / scaleSpeed; + + transform.DOScale(targetScale, duration).SetEase(Ease.Linear); + yield return new WaitForSeconds(duration); + } + + private IEnumerator AdjustClawsForGrab() + { + if (currentTarget == null) yield break; + + SpriteRenderer targetSprite = currentTarget.GetComponent(); + if (targetSprite == null) yield break; + + // 计算目标宽度 + float targetWidth = targetSprite.bounds.size.x; + + // 调整爪子位置以卡住边缘 + float extendAmount = targetWidth + grabOffset; + yield return ExtendClaws(extendAmount); + } + + private IEnumerator ExtendClaws(float amount) + { + Vector3 leftTarget = leftClaw.localPosition; + Vector3 rightTarget = rightClaw.localPosition; + + leftTarget.x -= amount / 2; + rightTarget.x += amount / 2; + + float duration = amount / clawExtendSpeed; + + leftClaw.DOLocalMove(leftTarget, duration).SetEase(Ease.Linear); + rightClaw.DOLocalMove(rightTarget, duration).SetEase(Ease.Linear); + + yield return new WaitForSeconds(duration); + } + + private IEnumerator Ascend() + { + float duration = (initialScale.x - transform.localScale.x) / scaleSpeed; + + transform.DOScale(initialScale, duration).SetEase(Ease.Linear); + yield return new WaitForSeconds(duration); + } + + private IEnumerator ReturnToInitialPosition() + { + // 先回到初始Y位置 + Vector3 targetPos = transform.position; + targetPos.y = initialPosition.y; + yield return MoveToPosition(targetPos); + + // 再回到初始X位置 + targetPos.x = initialPosition.x; + yield return MoveToPosition(targetPos); + } +} diff --git a/Assets/Scripts/FixSystemNew/BodyModule/ClawMachineController.cs.meta b/Assets/Scripts/FixSystemNew/BodyModule/ClawMachineController.cs.meta new file mode 100644 index 000000000..f228753cd --- /dev/null +++ b/Assets/Scripts/FixSystemNew/BodyModule/ClawMachineController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3bf3dc1f81a3a614bb15b4464058b2db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: