(Unity6 BRP)着弾点を中心に一定の範囲内のオブジェクトが特定のコンポーネントを持っているかを判定する(TryGetComponent)

(サンプルコード)

using UnityEngine;

public class DestroyShell : MonoBehaviour
{
    public GameObject effectPrefab;
    private float radius = 5f;

    // ★追加
    private PlayerHP playerHP;

    private void OnCollisionEnter(Collision collision)
    {
        Vector3 hitPoint = transform.position;
        Collider[] hitColliders = Physics.OverlapSphere(hitPoint, radius);

        foreach(Collider c in hitColliders)
        {
            // ★追加
            if(c.TryGetComponent(out playerHP)) // 範囲内のオブジェクトがPlayerHPコンポーネントを持っている場合
            {
                playerHP.Damage(); // Damage()メソッドを実行する。
            }
        }

        Destroy(gameObject);

        GameObject effect = Instantiate(effectPrefab, transform.position, Quaternion.identity);
        Destroy(effect, 1.0f);
    }
}

(実行結果)