增加失败后,停止敌人和角色的所有行动

This commit is contained in:
2026-07-05 03:14:01 +08:00
parent f5883eb451
commit 1e820b823a
+38 -3
View File
@@ -71,17 +71,34 @@ namespace GameFramework
// 等待一帧,让 HUD 先更新血量显示
yield return null;
// 1. 查找玩家并禁用控制
// 1. 禁用所有敌人 AI 和控制
DisableAllEnemyAI();
// 2. 查找玩家并禁用一切控制
var player = GameObject.FindGameObjectWithTag("Player");
if (player != null)
{
// 移动/翻滚/输入
var playerController = player.GetComponent<PlayerController>();
if (playerController != null) playerController.enabled = false;
// 近战攻击(点击)
var swordAttack = player.GetComponent<IndianOceanAssets.Engine2_5D.SwordAttack>();
if (swordAttack != null) swordAttack.enabled = false;
// 远程攻击(点击)
var projectileShooter = player.GetComponent<IndianOceanAssets.Engine2_5D.ProjectileShooter>();
if (projectileShooter != null) projectileShooter.enabled = false;
// 技能:唤魂灯笼
var lanternSystem = player.GetComponent<IndianOceanAssets.Engine2_5D.SpiritLanternSystem>();
if (lanternSystem != null) lanternSystem.enabled = false;
// 相机跟随
var camFollow = Camera.main != null ? Camera.main.GetComponent<CameraFollow>() : null;
if (camFollow != null) camFollow.enabled = false;
// 2. 光源缩小至完全不可见
// 3. 光源缩小至完全不可见
var lightSource = player.GetComponent<LightSource>();
if (lightSource != null)
{
@@ -112,10 +129,28 @@ namespace GameFramework
yield return new WaitForSecondsRealtime(lightShrinkDuration);
}
// 3. 淡出黑色 + 显示失败叠加层(不切场景)
// 4. 淡出黑色 + 显示失败叠加层(不切场景)
yield return StartCoroutine(ShowLostOverlay());
}
/// <summary>
/// 禁用场景中所有敌人相关的 AI 和控制组件。
/// </summary>
private void DisableAllEnemyAI()
{
// 禁用所有 EnemyAI
var enemyAIs = FindObjectsOfType<IndianOceanAssets.Engine2_5D.EnemyAI>();
foreach (var ai in enemyAIs)
ai.enabled = false;
// 禁用 EnemyManager(停止生成/管理逻辑)
var enemyManager = FindObjectOfType<IndianOceanAssets.Engine2_5D.EnemyManager>();
if (enemyManager != null)
enemyManager.enabled = false;
Debug.Log($"[GameManager] 已禁用 {enemyAIs.Length} 个 EnemyAI + EnemyManager");
}
/// <summary>
/// 胜利过场协程:光源扩大 → 淡出 → 跳转 Scoring。
/// </summary>