Kursach_StealthAction/Assets/Scripts/ImpactWave.cs
2026-10-11 19:16:11 +03:00

55 lines
2.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<BlindMutantAI>();
if (mutant != null)
{
// Заставляем мутанта бежать в точку удара
mutant.HearSound(contact.point);
}
}
}
}
}