From 1ab733c127d18de9b156c30328c3eaf81300b948 Mon Sep 17 00:00:00 2001 From: ohgushiyuga Date: Tue, 14 Jul 2026 14:14:48 +0900 Subject: [PATCH] bosuheya chouseimae --- Assets/Thread.prefab | 4 +- .../XR/Settings/OpenXRPackageSettings.asset | 6 +-- Assets/_Scenes/BossStage.unity | 45 ++++++++++++----- .../BossStage/NavMesh-SM_Building_Floor.asset | Bin 37808 -> 32256 bytes Assets/_Scripts/BossController.cs | 47 +++++++++++++++--- Assets/_Scripts/Bossdebug.cs | 44 ++++++++++++++++ Assets/_Scripts/Bossdebug.cs.meta | 2 + Assets/_Scripts/SpiderIdleState.cs | 21 +++++--- Assets/_Scripts/VRPunchAttack.cs | 34 +++++++++---- 9 files changed, 161 insertions(+), 42 deletions(-) create mode 100644 Assets/_Scripts/Bossdebug.cs create mode 100644 Assets/_Scripts/Bossdebug.cs.meta diff --git a/Assets/Thread.prefab b/Assets/Thread.prefab index d5a569d..9a57f59 100644 --- a/Assets/Thread.prefab +++ b/Assets/Thread.prefab @@ -27,13 +27,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7127456385706922585} serializedVersion: 2 - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: -0.7071068} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 83.62, y: -8.22, z: -7.05} m_LocalScale: {x: 7, y: 7, z: 7} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 270, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!33 &1825556039889797282 MeshFilter: m_ObjectHideFlags: 0 diff --git a/Assets/XR/Settings/OpenXRPackageSettings.asset b/Assets/XR/Settings/OpenXRPackageSettings.asset index 50424f1..060a7a5 100644 --- a/Assets/XR/Settings/OpenXRPackageSettings.asset +++ b/Assets/XR/Settings/OpenXRPackageSettings.asset @@ -1273,8 +1273,8 @@ MonoBehaviour: features: - {fileID: 7011443450567333355} - {fileID: -671281728444007487} - - {fileID: -901939997048047619} - - {fileID: -1734471456787174204} + - {fileID: 6956056911768161135} + - {fileID: 5091991234558418143} - {fileID: 8980318060753866109} - {fileID: -6559185765804338520} - {fileID: -4756202077021157709} @@ -1285,7 +1285,7 @@ MonoBehaviour: - {fileID: 348827886137839178} - {fileID: -7499073031166464939} - {fileID: 7666556398442971420} - - {fileID: 431653824124869831} + - {fileID: 1118878472687837173} - {fileID: 3985858319333531581} - {fileID: -6511185071715886993} - {fileID: -4363231183632145407} diff --git a/Assets/_Scenes/BossStage.unity b/Assets/_Scenes/BossStage.unity index eb4749a..212bca8 100644 --- a/Assets/_Scenes/BossStage.unity +++ b/Assets/_Scenes/BossStage.unity @@ -702,6 +702,10 @@ MonoBehaviour: groundAnchor: {fileID: 1519524653} k__BackingField: 10 k__BackingField: 5 + k__BackingField: 8 + k__BackingField: 0.2 + k__BackingField: 0.8 + k__BackingField: 3 warningMarkerPrefab: {fileID: 4416133559060049660, guid: bbba2f965a48a1f41aa3aa75745eafc0, type: 3} webPrefab: {fileID: 7127456385706922585, guid: 6cee7cb816e34c1478e31e98e258a22a, type: 3} --- !u!195 &139010308 @@ -745,8 +749,8 @@ BoxCollider: m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 - m_Size: {x: 2, y: 2, z: 2} - m_Center: {x: 0, y: 0, z: 1.2} + m_Size: {x: 1, y: 2, z: 1} + m_Center: {x: 0, y: 1, z: 1.8} --- !u!54 &139010317 Rigidbody: m_ObjectHideFlags: 0 @@ -774,6 +778,18 @@ Rigidbody: m_Interpolate: 0 m_Constraints: 0 m_CollisionDetection: 0 +--- !u!114 &139010320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 139010306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2cd755b0c100204e833df85acb412e8, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::BossDebugController --- !u!1 &142265989 GameObject: m_ObjectHideFlags: 0 @@ -1647,7 +1663,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalPosition.x - value: -2.3648567 + value: -15.8 objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalPosition.y @@ -1659,7 +1675,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalRotation.w - value: 0.9455186 + value: 0.98599327 objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalRotation.x @@ -1667,7 +1683,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalRotation.y - value: 0.32556805 + value: 0.16678526 objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalRotation.z @@ -1679,7 +1695,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalEulerAnglesHint.y - value: 38 + value: 19.202 objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalEulerAnglesHint.z @@ -1930,7 +1946,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalPosition.z - value: 32.56478 + value: 31.8 objectReference: {fileID: 0} - target: {fileID: 400000, guid: d9d1fbfcf69364ffd8f9c6ade9ce90fe, type: 3} propertyPath: m_LocalRotation.w @@ -4302,6 +4318,9 @@ PrefabInstance: - targetCorrespondingSourceObject: {fileID: 1987720806421918, guid: a2dfe588a42016e40892b72d31fd1cf6, type: 3} insertIndex: -1 addedObject: {fileID: 139010317} + - targetCorrespondingSourceObject: {fileID: 1987720806421918, guid: a2dfe588a42016e40892b72d31fd1cf6, type: 3} + insertIndex: -1 + addedObject: {fileID: 139010320} m_SourcePrefab: {fileID: 100100000, guid: a2dfe588a42016e40892b72d31fd1cf6, type: 3} --- !u!1001 &1153141912 PrefabInstance: @@ -4686,7 +4705,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1030989063, guid: abc00000000014917668085838676610, type: 3} propertyPath: m_LocalScale.x - value: 13 + value: 8 objectReference: {fileID: 0} - target: {fileID: 1030989063, guid: abc00000000014917668085838676610, type: 3} propertyPath: m_LocalScale.y @@ -4694,11 +4713,11 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 1030989063, guid: abc00000000014917668085838676610, type: 3} propertyPath: m_LocalScale.z - value: 13 + value: 8 objectReference: {fileID: 0} - target: {fileID: 1030989063, guid: abc00000000014917668085838676610, type: 3} propertyPath: m_LocalPosition.x - value: 99.7 + value: 79.7 objectReference: {fileID: 0} - target: {fileID: 1030989063, guid: abc00000000014917668085838676610, type: 3} propertyPath: m_LocalPosition.y @@ -5100,7 +5119,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &1398221365 Transform: m_ObjectHideFlags: 0 @@ -5110,7 +5129,7 @@ Transform: m_GameObject: {fileID: 1398221364} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -0.22, z: -0.32} + m_LocalPosition: {x: -0.015, y: -0.22, z: 0.081} m_LocalScale: {x: 0.45, y: 0.25, z: 0.35} m_ConstrainProportionsScale: 0 m_Children: [] @@ -5495,7 +5514,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 8806329115733545878, guid: 77e7c27b2c5525e4aa8cc9f99d654486, type: 3} propertyPath: m_LocalPosition.z - value: -0.37 + value: -0.357 objectReference: {fileID: 0} - target: {fileID: 8806329115733545878, guid: 77e7c27b2c5525e4aa8cc9f99d654486, type: 3} propertyPath: m_LocalRotation.w diff --git a/Assets/_Scenes/BossStage/NavMesh-SM_Building_Floor.asset b/Assets/_Scenes/BossStage/NavMesh-SM_Building_Floor.asset index 0fd0a5005ba91cf3c0017d4f1674e1a1d56fdd63..ced76df16d88e807454c4e932f344b012bd643d3 100644 GIT binary patch literal 32256 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 q4*yxx;Wb;D-GBS-<_jO*(fp&ElUji<8W0yVt= literal 37808 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 + /// Unityインスペクターの右上メニューから実行できるデバッグ用コマンドです + /// + [ContextMenu("🛠️ デバッグ:強制必殺技(天井ジャンプ)")] + public void DebugTriggerUltimate() + { + if (!Application.isPlaying) + { + Debug.LogWarning("⚠️ ゲームが再生中(Playモード)の時のみ実行可能です。"); + return; + } + + Debug.Log("🛠️ 【デバッグ操作】必殺技の予約券を発行し、強制的に天井ジャンプステートへ遷移します。"); + + // 必殺技の発動権をONにし、現在の行動をキャンセルして天井ジャンプへ移行 + PendingUltimate = true; + ChangeState(); + } + #endregion } /// 共通データ(boss参照)を自動保持し、各子ステートの無駄なコードを極限まで削ります。 public abstract class SpiderStateBase : ISpiderState { protected readonly BossController boss; - + protected SpiderStateBase(BossController owner) { boss = owner; diff --git a/Assets/_Scripts/Bossdebug.cs b/Assets/_Scripts/Bossdebug.cs new file mode 100644 index 0000000..a60aafd --- /dev/null +++ b/Assets/_Scripts/Bossdebug.cs @@ -0,0 +1,44 @@ +using UnityEngine; + +public class BossDebugController : MonoBehaviour +{ + private BossController bossController; + + private void Awake() + { + // 同一オブジェクトにあるBossControllerを自動取得 + bossController = GetComponent(); + } + + private void Update() + { + // ─── ★キーボードの『U(Ultimate)』キーを押したら強制発動 ─── + if (Input.GetKeyDown(KeyCode.U)) + { + TriggerDebugUltimate(); + } + + // ─── ついでにあると便利な機能:『S(Stun)』キーで即座にパリィスタン ─── + if (Input.GetKeyDown(KeyCode.S)) + { + TriggerDebugStun(); + } + } + + private void TriggerDebugUltimate() + { + if (bossController == null) return; + + Debug.Log("🛠️ 【キーボードデバッグ】強制的に必殺技(天井ジャンプ)を発動します。"); + bossController.PendingUltimate = true; + bossController.ChangeState(); + } + + private void TriggerDebugStun() + { + if (bossController == null) return; + + Debug.Log("🛡️ 【キーボードデバッグ】強制的にパリィスタン(チャンスタイム)を発動します。"); + bossController.ChangeState(); + } +} \ No newline at end of file diff --git a/Assets/_Scripts/Bossdebug.cs.meta b/Assets/_Scripts/Bossdebug.cs.meta new file mode 100644 index 0000000..8a764cf --- /dev/null +++ b/Assets/_Scripts/Bossdebug.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d2cd755b0c100204e833df85acb412e8 \ No newline at end of file diff --git a/Assets/_Scripts/SpiderIdleState.cs b/Assets/_Scripts/SpiderIdleState.cs index 9b3859e..18b7eca 100644 --- a/Assets/_Scripts/SpiderIdleState.cs +++ b/Assets/_Scripts/SpiderIdleState.cs @@ -216,10 +216,11 @@ public class SpiderJumpToCeilingState : SpiderStateBase } } +// ========================================== +// ■ STATE: CEILING ATTACK (インスペクター無段階調整版) +// ========================================== public class SpiderCeilingAttackState : SpiderStateBase { - private float stateDuration = 7.0f; - private float shotInterval = 0.4f; private float timer = 0f; private float shotTimer = 0f; @@ -227,11 +228,13 @@ public class SpiderCeilingAttackState : SpiderStateBase public override void EnterState() { - timer = stateDuration; + // ★リファクタリング:インスペクターで設定した必殺技の長さを適用 + timer = boss.CeilingAttackDuration; shotTimer = 0f; + boss.Anim.SetBool("IsOnCeiling", true); boss.PendingUltimate = false; - Debug.Log("🕸️ 蜘蛛ボス:天井から無数の糸を乱射中!"); + Debug.Log($"🕸️ 蜘蛛ボス:天井からの乱射開始! 持続時間: {timer}秒 / 発射間隔: {boss.CeilingShotInterval}秒"); } public override void ExitState() @@ -247,10 +250,13 @@ public class SpiderCeilingAttackState : SpiderStateBase timer -= Time.deltaTime; shotTimer -= Time.deltaTime; + // タイマーがゼロになったら発射 if (shotTimer <= 0f) { ExecuteRandomWebAttack(); - shotTimer = shotInterval; + + // ★リファクタリング:インスペクターで設定した間隔(秒)でリセットして弾数を制御 + shotTimer = boss.CeilingShotInterval; } if (timer <= 0f) @@ -261,6 +267,7 @@ public class SpiderCeilingAttackState : SpiderStateBase private void ExecuteRandomWebAttack() { + // インスペクターで設定された半径(AttackRadius)を基準にランダム座標を計算 Vector2 randomCircle = Random.insideUnitCircle * boss.AttackRadius; Vector3 targetGroundPos = new Vector3( boss.groundAnchor.position.x + randomCircle.x, @@ -268,10 +275,10 @@ public class SpiderCeilingAttackState : SpiderStateBase boss.groundAnchor.position.z + randomCircle.y ); - boss.SpawnWarningAndWeb(targetGroundPos, 1.0f, 2.5f); + // ★リファクタリング:予兆マークのディレイや糸の生存時間もインスペクターと完全連動 + boss.SpawnWarningAndWeb(targetGroundPos, boss.WebWarningDelay, boss.WebDuration); } } - public class SpiderStunState : SpiderStateBase { private float stunTimer; diff --git a/Assets/_Scripts/VRPunchAttack.cs b/Assets/_Scripts/VRPunchAttack.cs index 7f7a779..9af493b 100644 --- a/Assets/_Scripts/VRPunchAttack.cs +++ b/Assets/_Scripts/VRPunchAttack.cs @@ -20,6 +20,9 @@ public class VRInputPunch : MonoBehaviour [SerializeField] private float parryStunDuration = 3.0f; // スタン時間(秒) [SerializeField] private float parryHapticAmplitude = 0.9f; // パリィ成功時の振動の強さ [SerializeField] private float parryHapticDuration = 0.25f; // パリィ成功時の振動の長さ + // ─── 多段ヒット・連続暴発防止用タイマー ─── + private float punchHitCooldown = 0f; // 次のパンチが当たるまでのインターバル + private float parryTriggerCooldown = 0f; // 次のパリィが成功するまでのインターバル private void OnEnable() { @@ -51,40 +54,51 @@ public class VRInputPunch : MonoBehaviour Vector3 velocity = velocityAction.action.ReadValue(); float speed = velocity.magnitude; + // ======================================================================== + // 【パリィ判定】当たったオブジェクトが敵の拳だった場合 + // ======================================================================== if (other.CompareTag("EnemyFist")) { Debug.Log($"🛡️ [パリィチェック] 敵の拳と接触。構え状態: {poseDetector.IsPosing}"); + // 自分が「構え状態」のときだけパリィの成立チェックを行う if (poseDetector.IsPosing) { + // 1. ザコ敵(EnemyAI)へのパリィ判定 EnemyAI enemyAI = other.GetComponentInParent(); if (enemyAI != null) { enemyAI.TriggerParryStun(parryStunDuration); TriggerHaptics(parryHapticAmplitude, parryHapticDuration); - - Debug.Log($"🛡️ 【ジャストパリィ成功!】 敵の体勢を崩しました。スタン時間: {parryStunDuration}秒"); - return; + Debug.Log($"🛡️ 【ジャストパリィ成功!】 敵の体勢を崩しました。"); + return; // ★本当のパリィ成功時のみ、ここで処理を終了する } + // 2. ボス(BossController)へのパリィ判定 BossController boss = other.GetComponentInParent(); if (boss != null) { - if(boss.TriggerParryStun()) + // ★リファクタリング:ボスが本当に攻撃中(Bite/Charge)で、パリィが成功した時だけ終了する + if (boss.TriggerParryStun()) { - TriggerHaptics(parryHapticAmplitude, parryHapticDuration); - - Debug.Log("🛡️ 【ジャストパリィ成功!】 ボスの体勢を崩しました!"); - return; + TriggerHaptics(parryHapticAmplitude, parryHapticDuration); + Debug.Log("🛡️ 【ジャストパリィ成功!】 ボスの体勢を崩しました!"); + return; // ★本当のパリィ成功時のみ、ここで処理を終了する } } } - Debug.Log("🧱 ガード(構え不足):敵の攻撃は防いだが、弾き返せなかった。"); + // ─── ★ここが今回の核心(超重要リファクタリング) ─── + // 構え状態ではなかった場合、またはボスが攻撃中でなくパリィが不成立だった場合は、 + // 「プレイヤーが隙を狙って殴りに行った」とみなして、returnせずにそのまま下のパンチ処理へ流す! + Debug.Log("🥊 パリィ不成立、または攻撃チャンス:通常のパンチダメージ処理へ移行します。"); } + // ──────────────────────────────────────────────────────────────────────── - // パンチ攻撃の処理 + // ======================================================================== + // 【パンチ攻撃の処理】 + // ======================================================================== Debug.Log($"[InputSystem接触] {other.name} に触れました。センサー速度: {speed:F2} m/s"); if (speed >= minPunchSpeed)