using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using Script.Gameplay.Interface; using Script.Gameplay.Connect; namespace Script.Gameplay.Facility { public class ButtonInteractController : BaseFacilityController { [SerializeField] private float signalDuration = 1.0f; // 信号持续时间(秒) [SerializeField] private GameObject buttonPressPoint; private bool isPressing = false; private Vector3 buttonInitialPosition; private void Awake() { buttonInitialPosition = buttonPressPoint.transform.position; } public override string GetInteractPrompt() { return "按F按下按钮"; } public override void Interact(GameObject interactor) { if (isPressing) return; StartCoroutine(SendSignalCoroutine()); //Debug.Log("Button pressed"); } private IEnumerator SendSignalCoroutine() { SendSignal(true, this.gameObject); isPressing = true; // 按钮按下的动画或效果可以在这里添加 buttonPressPoint.transform.position = new Vector3(0, 0, 0); yield return new WaitForSeconds(signalDuration); SendSignal(false, this.gameObject); isPressing = false; // 按钮弹起的动画或效果可以在这里添加 buttonPressPoint.transform.position = buttonInitialPosition; } } }