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; [SerializeField] private AudioClip turnSound; [SerializeField] private AudioClip returnSound; [SerializeField] private AudioSource buttonSound; 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); buttonSound.clip = turnSound; buttonSound.Play(); yield return new WaitForSeconds(signalDuration); SendSignal(false, this.gameObject); isPressing = false; // 按钮弹起的动画或效果可以在这里添加 buttonPressPoint.transform.position = buttonInitialPosition; buttonSound.clip = returnSound; buttonSound.Play(); } } }