41 lines
1.8 KiB
C#
41 lines
1.8 KiB
C#
using UnityEngine;
|
||
|
||
public class ImpactWave : MonoBehaviour
|
||
{
|
||
[Header("Настройки эхолокации")]
|
||
[Tooltip("Минимальная сила удара, при которой появится волна")]
|
||
public float minImpactForce = 2f;
|
||
|
||
[Tooltip("Префаб звуковой волны (или источника света)")]
|
||
public GameObject wavePrefab;
|
||
|
||
private void OnCollisionEnter(Collision collision)
|
||
{
|
||
// Эта строчка выведет сообщение красным текстом в консоль Unity при любом касании
|
||
Debug.Log("УДАР! Сила: " + collision.relativeVelocity.magnitude);
|
||
|
||
if (collision.relativeVelocity.magnitude >= minImpactForce && wavePrefab != null)
|
||
{
|
||
Instantiate(wavePrefab, collision.contacts[0].point, Quaternion.identity);
|
||
}
|
||
// Считаем силу, с которой предмет врезался в препятствие
|
||
float impactForce = collision.relativeVelocity.magnitude;
|
||
|
||
if (impactForce >= minImpactForce)
|
||
{
|
||
// Берем конкретную точку в пространстве, где произошло касание
|
||
ContactPoint contact = collision.contacts[0];
|
||
|
||
// Если префаб назначен, создаем его в точке удара
|
||
if (wavePrefab != null)
|
||
{
|
||
Instantiate(wavePrefab, contact.point, Quaternion.identity);
|
||
}
|
||
|
||
// Подсказка: если у предмета есть компонент AudioSource,
|
||
// здесь можно вызывать звук падения, громкость которого зависит от impactForce
|
||
}
|
||
}
|
||
|
||
}
|