Fix final chanrao audio, smooth camera3 transition, show TipPanel for 2s, and play tuoxiezi video
This commit is contained in:
@@ -98,11 +98,57 @@ public class AudioManager : MonoBehaviour
|
||||
public void StopVoice() { _voiceSource.Stop(); }
|
||||
|
||||
public void SwitchToCamera3()
|
||||
{
|
||||
StartCoroutine(SmoothSwitchCameraCoroutine());
|
||||
}
|
||||
|
||||
private System.Collections.IEnumerator SmoothSwitchCameraCoroutine()
|
||||
{
|
||||
var cam2 = GameObject.Find("camera2");
|
||||
var cam3 = GameObject.Find("camera3");
|
||||
if (cam2 != null) { var c = cam2.GetComponent<Camera>(); if (c != null) c.enabled = false; }
|
||||
if (cam3 != null) { var c = cam3.GetComponent<Camera>(); if (c != null) c.enabled = true; }
|
||||
Debug.Log("[AudioManager] camera2→camera3 直接切换完成");
|
||||
|
||||
if (cam2 == null || cam3 == null)
|
||||
{
|
||||
if (cam2 != null) { var c = cam2.GetComponent<Camera>(); if (c != null) c.enabled = false; }
|
||||
if (cam3 != null) { var c = cam3.GetComponent<Camera>(); if (c != null) c.enabled = true; }
|
||||
yield break;
|
||||
}
|
||||
|
||||
var c2 = cam2.GetComponent<Camera>();
|
||||
var c3 = cam3.GetComponent<Camera>();
|
||||
|
||||
if (c2 == null || c3 == null) yield break;
|
||||
|
||||
// 保存 camera3 原本的目标位置和旋转
|
||||
Vector3 targetPos = cam3.transform.position;
|
||||
Quaternion targetRot = cam3.transform.rotation;
|
||||
|
||||
// 将 camera3 放到 camera2 的位置
|
||||
cam3.transform.position = cam2.transform.position;
|
||||
cam3.transform.rotation = cam2.transform.rotation;
|
||||
|
||||
// 切换激活状态,这样任何挂在 camera3 上的后期特效立刻生效,但视角还没变
|
||||
c2.enabled = false;
|
||||
c3.enabled = true;
|
||||
|
||||
float duration = 1.0f;
|
||||
float elapsed = 0f;
|
||||
|
||||
while (elapsed < duration)
|
||||
{
|
||||
elapsed += Time.deltaTime;
|
||||
float t = elapsed / duration;
|
||||
// 加上平滑曲线 (EaseInOut)
|
||||
t = t * t * (3f - 2f * t);
|
||||
|
||||
cam3.transform.position = Vector3.Lerp(cam2.transform.position, targetPos, t);
|
||||
cam3.transform.rotation = Quaternion.Slerp(cam2.transform.rotation, targetRot, t);
|
||||
yield return null;
|
||||
}
|
||||
|
||||
cam3.transform.position = targetPos;
|
||||
cam3.transform.rotation = targetRot;
|
||||
|
||||
Debug.Log("[AudioManager] camera2→camera3 平滑过渡完成");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +115,9 @@ public class PingClickHandler : MonoBehaviour
|
||||
int activePingCount = 0;
|
||||
foreach (var p in remainingPings)
|
||||
{
|
||||
if (p.gameObject.activeInHierarchy) activePingCount++;
|
||||
// In phase 2, finished pings have their collider disabled and _isBlinking set to false.
|
||||
var col = p.GetComponent<Collider>();
|
||||
if (col != null && col.enabled) activePingCount++;
|
||||
}
|
||||
|
||||
if (activePingCount == 0)
|
||||
|
||||
@@ -148,6 +148,14 @@ public class ShoseClickHandler : MonoBehaviour
|
||||
{
|
||||
audioManager.SwitchToCamera3();
|
||||
}
|
||||
|
||||
// 显示 VideoPanel 并播放视频
|
||||
var videoController = FindObjectOfType<VideoController>(true);
|
||||
if (videoController != null)
|
||||
{
|
||||
videoController.gameObject.SetActive(true);
|
||||
videoController.PlayVideo("tuoXieZi.mp4");
|
||||
}
|
||||
}
|
||||
|
||||
public void ResetState()
|
||||
|
||||
@@ -450,12 +450,35 @@ public class PageController : MonoBehaviour
|
||||
}
|
||||
|
||||
Debug.Log($"PageController: 开始等待 {waitTime} 秒以切换摄像机并激活鞋子");
|
||||
|
||||
// --- 新增:展示 TipPanel 2秒 ---
|
||||
var tipPanel = GameObject.Find("TipPanel");
|
||||
if (tipPanel == null)
|
||||
{
|
||||
var allT = Resources.FindObjectsOfTypeAll<Transform>();
|
||||
foreach(var t in allT) { if (t.name == "TipPanel") { tipPanel = t.gameObject; break; } }
|
||||
}
|
||||
if (tipPanel != null)
|
||||
{
|
||||
tipPanel.SetActive(true);
|
||||
// 这里你可以修改 TipPanel 上的文字,如果不修改,它将保持默认内容
|
||||
// 等待2秒后再隐藏
|
||||
StartCoroutine(HideTipPanelAfterDelay(tipPanel, 2.0f));
|
||||
}
|
||||
// -------------------------------
|
||||
|
||||
yield return new WaitForSeconds(waitTime);
|
||||
|
||||
// 2. 切换到 camera3
|
||||
if (am != null) am.SwitchToCamera3();
|
||||
}
|
||||
|
||||
private System.Collections.IEnumerator HideTipPanelAfterDelay(GameObject tipPanel, float delay)
|
||||
{
|
||||
yield return new WaitForSeconds(delay);
|
||||
if (tipPanel != null) tipPanel.SetActive(false);
|
||||
}
|
||||
|
||||
private void HideShose()
|
||||
{
|
||||
var shose = GameObject.Find("Shose");
|
||||
|
||||
Reference in New Issue
Block a user