\
This commit is contained in:
@@ -2,11 +2,6 @@ using UnityEngine;
|
|||||||
using UnityEngine.XR.Interaction.Toolkit;
|
using UnityEngine.XR.Interaction.Toolkit;
|
||||||
using UnityEngine.XR.Interaction.Toolkit.Interactors;
|
using UnityEngine.XR.Interaction.Toolkit.Interactors;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 3D空間上の2つのソケットスロットにバフモジュールがハメ込まれたかを監視し、
|
|
||||||
/// 連結完了時にバフを発動させるパズル管理クラス
|
|
||||||
/// </summary>
|
|
||||||
|
|
||||||
public class CodingPuzzleManager : MonoBehaviour
|
public class CodingPuzzleManager : MonoBehaviour
|
||||||
{
|
{
|
||||||
[Header("ソケットスロットの設定")]
|
[Header("ソケットスロットの設定")]
|
||||||
@@ -41,9 +36,6 @@ public class CodingPuzzleManager : MonoBehaviour
|
|||||||
CheckPuzzleCompletion();
|
CheckPuzzleCompletion();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 両方のスロットが埋まっているかチェックし、埋まっていれば連結バフを発動する
|
|
||||||
/// </summary>
|
|
||||||
private void CheckPuzzleCompletion()
|
private void CheckPuzzleCompletion()
|
||||||
{
|
{
|
||||||
if (socketA == null || socketB == null) return;
|
if (socketA == null || socketB == null) return;
|
||||||
@@ -63,8 +55,6 @@ public class CodingPuzzleManager : MonoBehaviour
|
|||||||
|
|
||||||
Debug.Log($"💻 パズル連結完了! 検出されたコンボ: [{buff1}] + [{buff2}]");
|
Debug.Log($"💻 パズル連結完了! 検出されたコンボ: [{buff1}] + [{buff2}]");
|
||||||
|
|
||||||
// ★ソケットにハマっているオブジェクトを強制的に解放・リセット
|
|
||||||
// (これをしないと、次回Codingモードを開いた時にスロットが埋まったままになります)
|
|
||||||
ClearSockets();
|
ClearSockets();
|
||||||
|
|
||||||
// PlayerStatusManagerにバフを適用させ、時間停止を解除してプレイ画面に戻る
|
// PlayerStatusManagerにバフを適用させ、時間停止を解除してプレイ画面に戻る
|
||||||
@@ -75,10 +65,6 @@ public class CodingPuzzleManager : MonoBehaviour
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// オブジェクト名に含まれるキーワードから、ステータスマネージャーに渡す用の正確なバフ名を返すヘルパー
|
|
||||||
/// </summary>
|
|
||||||
private string GetBuffNameFromObjectName(string objName)
|
private string GetBuffNameFromObjectName(string objName)
|
||||||
{
|
{
|
||||||
if (objName.Contains("AttackUp")) return "AttackUp";
|
if (objName.Contains("AttackUp")) return "AttackUp";
|
||||||
@@ -87,15 +73,8 @@ public class CodingPuzzleManager : MonoBehaviour
|
|||||||
return "Unknown";
|
return "Unknown";
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 次回起動時のために、ソケットの選択状態を内部的・物理的に安全にクリアする
|
|
||||||
/// </summary>
|
|
||||||
private void ClearSockets()
|
private void ClearSockets()
|
||||||
{
|
{
|
||||||
// 開発環境のSDKバージョンによって挙動が異なる場合があるため、
|
|
||||||
// ハハマっているモジュールを一度ソケットの子供から外し、初期位置付近に戻すか、
|
|
||||||
// あるいは単純に非アクティブ(または位置リセット)にする処理が推奨されます。
|
|
||||||
// ここでは安全のため、ハマっていたオブジェクトの座標を台座の手前に逃がします。
|
|
||||||
|
|
||||||
if (socketA.firstInteractableSelected != null)
|
if (socketA.firstInteractableSelected != null)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -121,9 +121,6 @@ public class PlayerStatusManager : MonoBehaviour
|
|||||||
if (codingModeUI != null) codingModeUI.SetActive(true);
|
if (codingModeUI != null) codingModeUI.SetActive(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ★役割拡張:パズル完了時に呼び出され、指定された2つのバフを発動して時間を再開する
|
|
||||||
/// </summary>
|
|
||||||
public void ApplyBuffsAndResume(string buff1, string buff2)
|
public void ApplyBuffsAndResume(string buff1, string buff2)
|
||||||
{
|
{
|
||||||
// 1. 選択された2つのバフをそれぞれ発動(重複なしの仕様を適用)
|
// 1. 選択された2つのバフをそれぞれ発動(重複なしの仕様を適用)
|
||||||
@@ -138,9 +135,6 @@ public class PlayerStatusManager : MonoBehaviour
|
|||||||
currentGauge = 0f; // ゲージを消費
|
currentGauge = 0f; // ゲージを消費
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 文字列に応じて対象のバフを起動する内部メソッド
|
|
||||||
/// </summary>
|
|
||||||
private void ActivateBuffByName(string buffName)
|
private void ActivateBuffByName(string buffName)
|
||||||
{
|
{
|
||||||
switch (buffName)
|
switch (buffName)
|
||||||
@@ -164,20 +158,13 @@ public class PlayerStatusManager : MonoBehaviour
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// HP回復の即時実行処理
|
|
||||||
/// </summary>
|
|
||||||
private void ExecuteHeal()
|
private void ExecuteHeal()
|
||||||
{
|
{
|
||||||
Debug.Log($"💚 HP回復バフ発動! 回復量: {hpHealAmount}");
|
Debug.Log($"💚 HP回復バフ発動! 回復量: {hpHealAmount}");
|
||||||
// 【将来の拡張】プレイヤーのHealthスクリプトが完成したら、ここに回復処理を記述します
|
// プレイヤーのHealthスクリプトが完成したら、ここに回復処理を記述します
|
||||||
// PlayerHealth.Instance.Heal(hpHealAmount);
|
// PlayerHealth.Instance.Heal(hpHealAmount);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 毎フレーム、有効なバフタイマーをリアルタイムで減算する
|
|
||||||
/// </summary>
|
|
||||||
private void UpdateBuffTimers()
|
private void UpdateBuffTimers()
|
||||||
{
|
{
|
||||||
if (attackBuffTimer > 0f)
|
if (attackBuffTimer > 0f)
|
||||||
|
|||||||
Reference in New Issue
Block a user