From bb16550a0f48e281627511934105ab620152b1e3 Mon Sep 17 00:00:00 2001 From: GanX <2423855310@qq.com> Date: Mon, 20 Oct 2025 09:54:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(PressurePlate):=E5=AE=9E=E7=8E=B0=E5=8E=8B?= =?UTF-8?q?=E5=8A=9B=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Prefab/Gameplay/Door.prefab | 4 +- Assets/Prefab/Gameplay/PressurePlate.prefab | 182 +++++++++++ .../Prefab/Gameplay/PressurePlate.prefab.meta | 7 + Assets/Scenes/Test.unity | 290 +++++++++--------- .../Facility/PressurePlateController.cs | 75 +++++ .../Facility/PressurePlateController.cs.meta | 3 + 6 files changed, 414 insertions(+), 147 deletions(-) create mode 100644 Assets/Prefab/Gameplay/PressurePlate.prefab create mode 100644 Assets/Prefab/Gameplay/PressurePlate.prefab.meta create mode 100644 Assets/Script/Gameplay/Facility/PressurePlateController.cs create mode 100644 Assets/Script/Gameplay/Facility/PressurePlateController.cs.meta diff --git a/Assets/Prefab/Gameplay/Door.prefab b/Assets/Prefab/Gameplay/Door.prefab index f32885d..0f2a7ae 100644 --- a/Assets/Prefab/Gameplay/Door.prefab +++ b/Assets/Prefab/Gameplay/Door.prefab @@ -32,7 +32,7 @@ Transform: serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0.71, z: 0} - m_LocalScale: {x: 1.9314, y: 2.3882, z: 1} + m_LocalScale: {x: 2, y: 3, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} @@ -132,8 +132,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3bdc5380046d4cacb0dd579877f320eb, type: 3} m_Name: m_EditorClassIdentifier: - isActive: 1 Interactable: 1 + isActive: 1 --- !u!114 &6634784627554641663 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Assets/Prefab/Gameplay/PressurePlate.prefab b/Assets/Prefab/Gameplay/PressurePlate.prefab new file mode 100644 index 0000000..3860a8c --- /dev/null +++ b/Assets/Prefab/Gameplay/PressurePlate.prefab @@ -0,0 +1,182 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2191333364839819432 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8123550679489282954} + - component: {fileID: 2493044360019674672} + - component: {fileID: 1538197780757662793} + - component: {fileID: 3944240041841304458} + - component: {fileID: 8785614081330407045} + - component: {fileID: 220912239936987690} + - component: {fileID: 7681678543859060545} + - component: {fileID: -7803032184951374842} + m_Layer: 0 + m_Name: PressurePlate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8123550679489282954 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191333364839819432} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 3.72, y: 1, z: 0} + m_LocalScale: {x: 1, y: 0.2, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &2493044360019674672 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191333364839819432} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1538197780757662793 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191333364839819432} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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_AdditionalVertexStreams: {fileID: 0} +--- !u!54 &3944240041841304458 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191333364839819432} + serializedVersion: 4 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_CenterOfMass: {x: 0, y: 0, z: 0} + m_InertiaTensor: {x: 1, y: 1, z: 1} + m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ImplicitCom: 1 + m_ImplicitTensor: 1 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &8785614081330407045 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191333364839819432} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &220912239936987690 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191333364839819432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2791e039b8344f45ad6dc86f5188d82d, type: 3} + m_Name: + m_EditorClassIdentifier: + isActive: 1 +--- !u!114 &7681678543859060545 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191333364839819432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 06015834a0da4561ba47d104b73171a4, type: 3} + m_Name: + m_EditorClassIdentifier: + isActive: 1 +--- !u!114 &-7803032184951374842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191333364839819432} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2557c7d42f7a4d8896712ab2ae980b6f, type: 3} + m_Name: + m_EditorClassIdentifier: + isActive: 1 + detectLayer: + serializedVersion: 2 + m_Bits: 4294967295 + plateSize: {x: 1.2, y: 0.4, z: 1.2} + plateOffset: {x: 0, y: 0.5, z: 0} diff --git a/Assets/Prefab/Gameplay/PressurePlate.prefab.meta b/Assets/Prefab/Gameplay/PressurePlate.prefab.meta new file mode 100644 index 0000000..e1fed1e --- /dev/null +++ b/Assets/Prefab/Gameplay/PressurePlate.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b259f2c2ad8200d49b8ba9163724d69a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Test.unity b/Assets/Scenes/Test.unity index 9dd7b86..43cb32f 100644 --- a/Assets/Scenes/Test.unity +++ b/Assets/Scenes/Test.unity @@ -192,74 +192,6 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 2a2113dbf189fbd44bca90f4df91f338, type: 3} ---- !u!1001 &246593690 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalPosition.x - value: 5.81 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalPosition.y - value: 1.32 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2729643726423589850, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_Name - value: Door (1) - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3} --- !u!1 &410087039 GameObject: m_ObjectHideFlags: 0 @@ -620,74 +552,6 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: f480e7d630901ad48a69a5df6d2132f2, type: 3} ---- !u!1001 &1423037664 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - serializedVersion: 3 - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalPosition.x - value: 12.15 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalPosition.y - value: 1.32 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2729643726423589850, guid: b3e24e2df98d14e4ebc08cc68c071afa, - type: 3} - propertyPath: m_Name - value: Door (2) - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_RemovedGameObjects: [] - m_AddedGameObjects: [] - m_AddedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3} --- !u!1001 &1532480746 PrefabInstance: m_ObjectHideFlags: 0 @@ -756,6 +620,74 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 781c629235eee4f4eb34f1e763aa7f67, type: 3} +--- !u!1001 &1948851238 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalPosition.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalPosition.y + value: 1.5 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2729643726423589850, guid: b3e24e2df98d14e4ebc08cc68c071afa, + type: 3} + propertyPath: m_Name + value: Door (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3} --- !u!1 &2021089517 GameObject: m_ObjectHideFlags: 0 @@ -787,6 +719,74 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &366996911271636373 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 2191333364839819432, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_Name + value: PressurePlate + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalPosition.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.2 + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalPosition.z + value: -5 + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 8123550679489282954, guid: b259f2c2ad8200d49b8ba9163724d69a, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: b259f2c2ad8200d49b8ba9163724d69a, type: 3} --- !u!1001 &1781028406820323425 PrefabInstance: m_ObjectHideFlags: 0 @@ -803,12 +803,12 @@ PrefabInstance: - target: {fileID: 71697885929342062, guid: 8f4de64a5cce27745b5566ff3ef971c8, type: 3} propertyPath: m_LocalPosition.y - value: 4.13 + value: 1 objectReference: {fileID: 0} - target: {fileID: 71697885929342062, guid: 8f4de64a5cce27745b5566ff3ef971c8, type: 3} propertyPath: m_LocalPosition.z - value: -4.94 + value: 0 objectReference: {fileID: 0} - target: {fileID: 71697885929342062, guid: 8f4de64a5cce27745b5566ff3ef971c8, type: 3} @@ -866,12 +866,12 @@ PrefabInstance: - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3} propertyPath: m_LocalPosition.x - value: -0.4657 + value: -5 objectReference: {fileID: 0} - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3} propertyPath: m_LocalPosition.y - value: 1.4041 + value: 1.5 objectReference: {fileID: 0} - target: {fileID: 77361986880837193, guid: b3e24e2df98d14e4ebc08cc68c071afa, type: 3} @@ -934,17 +934,17 @@ PrefabInstance: - target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f, type: 3} propertyPath: m_LocalPosition.x - value: 2.47 + value: -5 objectReference: {fileID: 0} - target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f, type: 3} propertyPath: m_LocalPosition.y - value: 1.17 + value: 1 objectReference: {fileID: 0} - target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f, type: 3} propertyPath: m_LocalPosition.z - value: -4.94 + value: -5 objectReference: {fileID: 0} - target: {fileID: 502199709937918930, guid: ddd89e93db279184daa80d86bd4e770f, type: 3} @@ -1141,7 +1141,7 @@ SceneRoots: - {fileID: 7020889523296792185} - {fileID: 2021089518} - {fileID: 2088331975902746738} - - {fileID: 246593690} - - {fileID: 1423037664} + - {fileID: 1948851238} - {fileID: 1781028406820323425} + - {fileID: 366996911271636373} - {fileID: 6191742170513974480} diff --git a/Assets/Script/Gameplay/Facility/PressurePlateController.cs b/Assets/Script/Gameplay/Facility/PressurePlateController.cs new file mode 100644 index 0000000..8df9181 --- /dev/null +++ b/Assets/Script/Gameplay/Facility/PressurePlateController.cs @@ -0,0 +1,75 @@ +using UnityEngine; +using Script.Gameplay.Interface; +using Script.Gameplay.Connect; + +namespace Script.Gameplay.Facility +{ + public class PressurePlateController : MonoBehaviour, IEditableComponent, IConnectable + { + [SerializeField] private bool isActive = true; + [SerializeField] private LayerMask detectLayer = ~0; // 检测所有层,可在Inspector中指定 + [SerializeField] private Vector3 plateSize = new Vector3(1, 0.2f, 1); + [SerializeField] private Vector3 plateOffset = Vector3.up * 0.1f; + + private bool lastState = false; + + private void FixedUpdate() + { + if (!isActive) return; + bool hasObject = Physics.CheckBox(transform.position + plateOffset, plateSize * 0.5f, Quaternion.identity, detectLayer); + if (hasObject != lastState) + { + SendSignal(hasObject, gameObject); + lastState = hasObject; + } + } + + #region EditableComponent + + public bool IsActive + { + get => isActive; + set => isActive = value; + } + + public string ComponentName { get; set; } = "PressurePlate"; + public LockLevel LockLevel => LockLevel.Red; + + #endregion + + #region Connectable + + public void OnGazeEnter() { } + public void OnGazeExit() { } + public Vector3 GetPosition() => transform.position; + public string GetConnectableName() => gameObject.name; + public ConnectionLine OutputConnectionLine { get; set; } + public ConnectionLine InputConnectionLine { get; set; } + public bool IsConnectedOutput { get; set; } + public bool IsConnectedInput { get; set; } + + public void ReceiveSignal(bool active, GameObject sender) + { + // 压力板不响应输入信号 + } + + public void SendSignal(bool active, GameObject sender) + { + if (OutputConnectionLine != null) + { + OutputConnectionLine.ReceiveSignal(active); + } + } + + #endregion + +#if UNITY_EDITOR + private void OnDrawGizmosSelected() + { + Gizmos.color = Color.yellow; + Gizmos.DrawWireCube(transform.position + plateOffset, plateSize); + } +#endif + } +} + diff --git a/Assets/Script/Gameplay/Facility/PressurePlateController.cs.meta b/Assets/Script/Gameplay/Facility/PressurePlateController.cs.meta new file mode 100644 index 0000000..6a2cbfd --- /dev/null +++ b/Assets/Script/Gameplay/Facility/PressurePlateController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2557c7d42f7a4d8896712ab2ae980b6f +timeCreated: 1760924285 \ No newline at end of file