using System.Collections.Generic; using UnityEngine; using Script.Gameplay.Connect; namespace Script.Gameplay.Facility { public class PressurePlateController : BaseFacilityController { [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 (!isEnableInteract) return; bool hasObject = Physics.CheckBox(transform.position + plateOffset, plateSize * 0.5f, Quaternion.identity, detectLayer); if (hasObject != lastState) { SendSignal(hasObject, this.gameObject); lastState = hasObject; } } #if UNITY_EDITOR private void OnDrawGizmosSelected() { Gizmos.color = Color.yellow; Gizmos.DrawWireCube(transform.position + plateOffset, plateSize); } #endif } }