using UnityEngine; public class NearMissManager : MonoBehaviour { [SerializeField] private float maxNearMissDistance = 2f; public static bool bulletInZone; [SerializeField] PlayerInput playerInput; public BulletSpawner spawner; [SerializeField] float nearMissDificultyRatio; private void OnTriggerEnter2D(Collider2D collision) { if (!collision.CompareTag("Bullet")) return; bulletInZone = true; collision.GetComponent().bulletState = BulletStates.inNearMissZone; } private void OnTriggerExit2D(Collider2D collision) { if (!collision.CompareTag("Bullet")) return; float dist = Vector2.Distance(transform.position, collision.transform.position); // normalize distance (0 = perfect close, 1 = edge of zone) float t = Mathf.Clamp01(1f - (dist / maxNearMissDistance)); int score = Mathf.RoundToInt(Mathf.Lerp(1f, 10f, t)); ScoreManager.Instance.AddNearMiss(score); if (collision.GetComponent().bulletState == BulletStates.markForDeletion) { ScoreManager.Instance.AddHeat(score); collision.GetComponent().bulletState = BulletStates.inactive; playerInput.bullets.Remove(collision.gameObject); Destroy(collision.gameObject); } else { collision.GetComponent().bulletState = BulletStates.reversed; } bulletInZone = false; } }