Факт удара можно отследить через CollisionEnter. Скорость - магнитуда вектора движения. А дальше дело за фантазией. В общих чертах как-то так:
using UnityEngine;
public class RigidbodyDamager : MonoBehaviour
{
public float damageMultiplier = 1.0f; // Множитель урона (для коррекции значения урона)
private void OnCollisionEnter(Collision collision)
{
// Получаем силу удара мяча
float impactForce = collision.impulse.magnitude;
// Вычисляем урон в зависимости от силы удара (здесь можно использовать свою формулу)
float damage = impactForce * damageMultiplier;
// Применяем урон к объекту, с которым столкнулись (если это противник и имеет компонент здоровья)
Health health = collision.gameObject.GetComponent<Health>();
if (health != null)
{
health.Damage(damage);
}
}
}
Можно сделать как на примере - умножить скорость на некое число. А можно, например, добавить график AnimationCurve и там выставить все нужные значения.