using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;
using UnityEngine.XR.Interaction.Toolkit.Interactables;
///
/// S1 天命玄鸟 - 悬浮甲骨文字交互(仅负责文字显示/隐藏)
/// 归位逻辑由同一 GameObject 上的 ReturnPosition 负责。
///
/// hover(触摸/靠近,未抓取)→ 播放文字出现动画
/// selectEntered(抓取) → 播放文字消失动画
///
[RequireComponent(typeof(XRGrabInteractable))]
public class S1_OracleBoneInteract : MonoBehaviour
{
[Header("文字动画")]
[SerializeField] private Animator textAnimator;
[SerializeField] private string showAnimName = "open"; // 文字出现
[SerializeField] private string hideAnimName = "Translate"; // 文字消失
[Header("音效")]
public AudioSource touchAudio;
public AudioSource lightEffect;
private XRGrabInteractable m_grab;
private void Awake()
{
m_grab = GetComponent();
}
private void OnEnable()
{
m_grab.hoverEntered.AddListener(OnHoverEntered);
m_grab.selectEntered.AddListener(OnSelectEntered);
}
private void OnDisable()
{
m_grab.hoverEntered.RemoveListener(OnHoverEntered);
m_grab.selectEntered.RemoveListener(OnSelectEntered);
}
// 触摸(未抓取)→ 显示文字
private void OnHoverEntered(HoverEnterEventArgs args)
{
if (m_grab.isSelected) return;
if (lightEffect != null) lightEffect.Play();
ShowText();
}
// 抓取 → 隐藏文字
private void OnSelectEntered(SelectEnterEventArgs args)
{
HideText();
}
private void ShowText()
{
if (textAnimator != null) textAnimator.Play(showAnimName);
if (touchAudio != null) touchAudio.Play();
}
private void HideText()
{
if (textAnimator != null) textAnimator.Play(hideAnimName);
}
}