using UnityEngine; public class ImpactWave : MonoBehaviour { [Header("Настройки эхолокации")] [Tooltip("Минимальная сила удара, при которой появится волна")] public float minImpactForce = 2f; [Tooltip("Префаб звуковой волны (или источника света)")] public GameObject wavePrefab; [Header("Настройки слуха врагов")] [Tooltip("Радиус, в котором мутанты услышат падение предмета")] public float soundRadius = 15f; private void OnCollisionEnter(Collision collision) { float impactForce = collision.relativeVelocity.magnitude; Debug.Log("УДАР! Сила: " + impactForce); if (impactForce >= minImpactForce) { ContactPoint contact = collision.contacts[0]; // 1. ТВОЯ ЛОГИКА: Отрисовка света и волны через EchoTrigger if (wavePrefab != null) { Instantiate(wavePrefab, contact.point, Quaternion.identity); } if (EchoTrigger.Instance != null) { // Вычисляем интенсивность и радиус волны в зависимости от силы удара float intensity = Mathf.Clamp(impactForce / 5f, 0.5f, 3.0f); float radius = Mathf.Clamp(impactForce * 2f, 5f, 25f); EchoTrigger.Instance.TriggerExternalWave(contact.point, radius, intensity); } // 2. НОВАЯ ЛОГИКА: Оповещение мутантов о шуме Collider[] colliders = Physics.OverlapSphere(contact.point, soundRadius); foreach (Collider hit in colliders) { BlindMutantAI mutant = hit.GetComponent(); if (mutant != null) { // Заставляем мутанта бежать в точку удара mutant.HearSound(contact.point); } } } } }