diff --git a/Assets/Prefabs/Enemy.prefab b/Assets/Prefabs/Enemy.prefab index 3c70ad8..31c6483 100644 --- a/Assets/Prefabs/Enemy.prefab +++ b/Assets/Prefabs/Enemy.prefab @@ -33,7 +33,7 @@ Transform: m_GameObject: {fileID: 1661912868639658944} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 5.508, y: 1.532, z: 1} + m_LocalPosition: {x: 5.508, y: 1.832, z: 1} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/Scenes/Ingame.unity b/Assets/Scenes/Ingame.unity index 4e47a17..de4c21a 100644 --- a/Assets/Scenes/Ingame.unity +++ b/Assets/Scenes/Ingame.unity @@ -4142,7 +4142,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -6.4554644 + value: -6.1554644 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -5203,7 +5203,7 @@ PrefabInstance: - target: {fileID: 5102505034379151491, guid: 6f545478bd0fb7a478ed6f674a5210f5, type: 3} propertyPath: m_LocalPosition.y - value: -0.7901306 + value: -0.4901306 objectReference: {fileID: 0} - target: {fileID: 5102505034379151491, guid: 6f545478bd0fb7a478ed6f674a5210f5, type: 3} @@ -13067,7 +13067,7 @@ PrefabInstance: - target: {fileID: 4009130065698333725, guid: 9a1bd12ebb35d4dc997aa0c5494eda9b, type: 3} propertyPath: m_LocalPosition.y - value: 0.5000000 + value: 0.8000000 objectReference: {fileID: 0} - target: {fileID: 4009130065698333725, guid: 9a1bd12ebb35d4dc997aa0c5494eda9b, type: 3} @@ -16838,7 +16838,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -3.3154645 + value: -3.0154645 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -118941,7 +118941,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: 1.8445356 + value: 2.1445356 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -121349,7 +121349,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -6.4554644 + value: -6.1554644 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -125071,7 +125071,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -0.9454646 + value: -0.6454646 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -125506,7 +125506,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -4.9154644 + value: -4.6154644 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -125864,7 +125864,7 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 4520396350849616, guid: 7d60c822c3f1b408ea7a00ecdb5e047a, type: 3} propertyPath: m_LocalPosition.y - value: 0.5000000 + value: 0.8000000 objectReference: {fileID: 0} - target: {fileID: 4520396350849616, guid: 7d60c822c3f1b408ea7a00ecdb5e047a, type: 3} propertyPath: m_LocalPosition.z @@ -133748,7 +133748,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: 4.3145354 + value: 4.6145354 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -137743,7 +137743,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -1.3354645 + value: -1.0354645 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -137836,7 +137836,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -6.4954643 + value: -6.1954643 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -140571,7 +140571,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -4.4654640 + value: -4.1654640 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -296270,7 +296270,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -5.7054644 + value: -5.4054644 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -297389,7 +297389,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -4.8454640 + value: -4.5454640 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -311611,7 +311611,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -0.1254645 + value: 0.1745355 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -314947,7 +314947,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -1.2554646 + value: -0.9554646 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -317850,7 +317850,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: -4.9154644 + value: -4.6154644 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} @@ -320806,7 +320806,7 @@ PrefabInstance: - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} propertyPath: m_LocalPosition.y - value: 0.0845355 + value: 0.3845355 objectReference: {fileID: 0} - target: {fileID: 1658460978237467174, guid: f158aa2be3df6489185ef721f6fd79c1, type: 3} diff --git a/Assets/Scripts/Mechanics/EnemyController.cs b/Assets/Scripts/Mechanics/EnemyController.cs index 53e2735..a7fc3f4 100644 --- a/Assets/Scripts/Mechanics/EnemyController.cs +++ b/Assets/Scripts/Mechanics/EnemyController.cs @@ -29,8 +29,7 @@ namespace Platformer.Mechanics public float cliffCheckDistance = 0.6f; // 발 앞 절벽 검출 거리 public float cliffCheckDepth = 1.5f; // 발 아래 Raycast 거리 (BT81: 0.8→1.5 — 깊게 검출) public LayerMask groundLayerMask = (1 << 0) | (1 << 16); // BT81: Layer 0 (지면) + Layer 16 (발판) — Enemy/Player 거짓 양성 차단 - public float stuckThresholdTime = 0.3f; // 벽 정지 검출 시간 (BT83: 0.5→0.3 — 빠른 영역 전환) - public float wallCheckDistance = 0.5f; // BT83: 수평 벽 Raycast 거리 (벽 가장자리 미세 밀림 차단) + public float stuckThresholdTime = 0.5f; // 벽 정지 검출 시간 (BT85: 0.3→0.5 — 정상 이동 미세 영역 거짓 양성 차단) private float _startX; private float _targetX; @@ -132,26 +131,9 @@ namespace Platformer.Mechanics } _lastX = transform.position.x; - // BT84 — 수평 벽 검출 정정 (PD 보고 2026-05-08): BT83 거짓 양성 차단 - // BT83 시작 영역(bounds 내부)이 Foreground Tile 위에서 옆 Tile 검출 → 거짓 양성 → patrol X - // 정정: Raycast 시작 영역 = Capsule bounds 외부 (자기 검출 X) - if (Mathf.Abs(dx) > patrolArriveThreshold && _collider != null) - { - float halfWidth = _collider.bounds.extents.x; - Vector2 wallOrigin = new Vector2( - _collider.bounds.center.x + moveDir * (halfWidth + 0.05f), - _collider.bounds.center.y - ); - RaycastHit2D wallHit = Physics2D.Raycast(wallOrigin, new Vector2(moveDir, 0), wallCheckDistance, groundLayerMask); - if (wallHit.collider != null) - { - _patrolPhase = (_patrolPhase + 1) % 4; - SetNextPatrolTarget(); - dx = _targetX - transform.position.x; - moveDir = Mathf.Sign(dx); - _stuckTimer = 0f; - } - } + // BT85 — 수평 벽 Raycast 영역 폐기 (PD 보고 2026-05-08: 모든 Enemy 정지) + // BT83/BT84 영역 = bounds 외부+0.5m 영역도 옆 Tile (평지 인접) 검출 → 거짓 양성 → patrol X + // 정정: 수평 Raycast 폐기 + stuckTimer 영역 0.5초 (BT81 영역 회복) — 벽 정지 시 다음 phase // 절벽 검출 — 발 앞 영역 Raycast 지면 X 시 시작 위치로 즉시 복귀 if (Mathf.Abs(dx) > patrolArriveThreshold && _collider != null)