Files
VFSUnity/Assets/Scripts/Interaction/TouchPositionHandler.cs
T
yangbear 7519b37ee6 fix: 模型状态完全恢复 - man Animator重置 + touchPoint闪烁重启
- PlayOpeningFlow/ReturnToHome: 增加 _manAnimator.Play("manIdle") 强制重置动画状态
- TouchPositionHandler: 新增 OnEnable() 重新激活时自动重启闪烁协程+启用MeshRenderer
- 解决返回重来后 man 还停在 manfull、touchPoint 不再闪烁的问题
2026-06-30 15:09:31 +08:00

67 lines
1.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using UnityEngine;
/// <summary>
/// 挂在 touchArray 子球体上。球体用双Pass膨胀描边shaderCustom/OutlineUnlit),
/// 闪烁提示用户点击。点击后移动到对应位置并顺序显示下一个。
/// </summary>
public class TouchPositionHandler : MonoBehaviour
{
public Transform targetPosition;
public GameObject womanObject;
public GameObject nextTouchObject;
private MeshRenderer _meshRenderer;
private void Start()
{
_meshRenderer = GetComponent<MeshRenderer>();
StartCoroutine(BlinkMesh());
}
private System.Collections.IEnumerator BlinkMesh()
{
while (true)
{
if (_meshRenderer != null)
_meshRenderer.enabled = !_meshRenderer.enabled;
yield return new WaitForSeconds(0.4f);
}
}
private void OnMouseDown()
{
Debug.Log($"[TouchPosition] {name}: 被点击");
if (womanObject != null && targetPosition != null)
{
womanObject.transform.position = targetPosition.position;
womanObject.transform.rotation = targetPosition.rotation;
Debug.Log($"[TouchPosition] woman 移动到 {targetPosition.name}");
}
// 通知 StepManager 记录步骤
int stepIndex = transform.GetSiblingIndex() + 1;
var sm = FindObjectOfType<StepManager>();
if (sm != null) sm.RecordWomanStep(stepIndex);
StopAllCoroutines();
if (_meshRenderer != null) _meshRenderer.enabled = false;
gameObject.SetActive(false);
if (nextTouchObject != null)
{
nextTouchObject.SetActive(true);
Debug.Log($"[TouchPosition] {name} → {nextTouchObject.name} 显示");
}
}
private void OnEnable()
{
_meshRenderer = GetComponent<MeshRenderer>();
if (_meshRenderer != null) _meshRenderer.enabled = true;
StopAllCoroutines();
StartCoroutine(BlinkMesh());
}
}