fix(BT12-Dev): Player 피격 X — IsGrounded 조건 폐기 + Enemy HP 30~40 random (PD 지시 2026-05-13)
작업 1 — Player 피격 X fix: - EnemyController.Update L387-396 — IsGrounded 조건 폐기 + 진단 Debug.Log 2종 revert - PD 명시 "닿아도 피해" = ground·공중 무관 피격 (직전 2026-05-11 "공중 통과" 명시 폐기) - VisualBounds.Intersects(Player.Bounds) + !IsInvulnerable 단일 조건 작업 2 — Enemy HP 30~40 random: - Health.RandomMaxHPRange (Vector2Int) Inspector 필드 신규 - Health.Awake — RandomMaxHPRange.x>0 시 maxHP = Random.Range(min, max+1)·maxHearts 자동 산정·currentHP 갱신 - Enemy.prefab Inspector RandomMaxHPRange = (30, 40) PD 직접 설정 필요 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
0ad1325be8
commit
b4847b1545
|
|
@ -386,17 +386,12 @@ namespace Platformer.Mechanics
|
|||
}
|
||||
if (_cachedPlayer != null && _cachedPlayer.health != null && _cachedPlayer.health.IsAlive)
|
||||
{
|
||||
// PD 지시 2026-05-13 — Player 피격 X 원인 진단 (회수 의무·PD Console 측정 후 본 PM revert)
|
||||
bool intersects = VisualBounds.Intersects(_cachedPlayer.Bounds);
|
||||
if (intersects)
|
||||
{
|
||||
Debug.Log($"[EnemyHit][Intersect] enemy={name} playerGrounded={_cachedPlayer.IsGrounded} playerInvuln={_cachedPlayer.health.IsInvulnerable} enemyVB=({VisualBounds.center.x:F2},{VisualBounds.center.y:F2},sz={VisualBounds.size.x:F2}x{VisualBounds.size.y:F2}) playerB=({_cachedPlayer.Bounds.center.x:F2},{_cachedPlayer.Bounds.center.y:F2},sz={_cachedPlayer.Bounds.size.x:F2}x{_cachedPlayer.Bounds.size.y:F2}) t={Time.time:F2}");
|
||||
}
|
||||
if (_cachedPlayer.IsGrounded && intersects)
|
||||
// PD 지시 2026-05-13 — "닿아도 피해 X" 정정. IsGrounded 조건 폐기 영역 ground·공중 무관 피격.
|
||||
// 직전 2026-05-11 명시 "공중 통과" 영역 폐기 (PD 직접 의도 변경 영역).
|
||||
if (VisualBounds.Intersects(_cachedPlayer.Bounds))
|
||||
{
|
||||
if (!_cachedPlayer.health.IsInvulnerable)
|
||||
{
|
||||
Debug.Log($"[EnemyHit][Decrement] enemy={name} t={Time.time:F2}");
|
||||
_cachedPlayer.health.Decrement();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,10 @@ namespace Platformer.Mechanics
|
|||
[Tooltip("초기 보유 하트 수. 하트 1개 = 4 HP.")]
|
||||
public int maxHearts = 1;
|
||||
|
||||
// PD 지시 2026-05-13 — Enemy HP 30~40 random (x·y > 0 시 활성·Awake 영역 maxHP 직접 random·maxHearts 자동 산정)
|
||||
[Tooltip("0이 아닐 시 random 범위 (min·max inclusive) — Awake 영역 maxHP 영역 random 설정·maxHearts 자동 산정")]
|
||||
public Vector2Int RandomMaxHPRange = Vector2Int.zero;
|
||||
|
||||
/// <summary>
|
||||
/// 산정된 최대 HP(쿼터 단위). 직접 설정 대신 <see cref="maxHearts"/>를 통해 조정한다 (시리얼라이즈 호환 유지).
|
||||
/// BT7-Plan 이전에는 1로 고정되어 있었으나, 현재 PD 지시로 하트 분할 시스템 전환.
|
||||
|
|
@ -365,6 +369,15 @@ namespace Platformer.Mechanics
|
|||
|
||||
void Awake()
|
||||
{
|
||||
// PD 지시 2026-05-13 — RandomMaxHPRange 활성 시 maxHP random 우선
|
||||
if (RandomMaxHPRange.x > 0 && RandomMaxHPRange.y >= RandomMaxHPRange.x)
|
||||
{
|
||||
maxHP = UnityEngine.Random.Range(RandomMaxHPRange.x, RandomMaxHPRange.y + 1);
|
||||
maxHearts = Mathf.Max(1, maxHP / QuartersPerHeart);
|
||||
currentHP = maxHP;
|
||||
return;
|
||||
}
|
||||
|
||||
// maxHearts가 설정되어 있고 maxHP가 구식 값(1)으로 남아있는 프리팹 호환 처리.
|
||||
// 정상 흐름: maxHP = maxHearts * 4, currentHP = maxHP로 초기화.
|
||||
if (maxHearts <= 0) maxHearts = 1;
|
||||
|
|
|
|||
Loading…
Reference in New Issue