Unity C#

Physics.OverlapSphere в Unity C#: поиск объектов в радиусе

Метод Physics.OverlapSphere находит все коллайдеры внутри сферы заданного радиуса. Он особенно полезен для эффектов взрыва, обнаружения врагов вокруг игрока и зональных взаимодействий.

Особенности

  • Поиск объектов: возвращает массив коллайдеров в пределах радиуса.
  • Гибкость: задаёшь центр сферы и её радиус.
  • Фильтрация: вместе со слоями ищет только нужные типы объектов.

Пример кода

Взрыв находит объекты в радиусе и добавляет силу всем, у кого есть Rigidbody:

using UnityEngine;

public class Explosion : MonoBehaviour
{
    public float radius = 5.0f;

    void Start()
    {
        // Центр сферы — текущая позиция объекта
        Vector3 explosionPosition = transform.position;

        // Получаем массив объектов, находящихся в радиусе
        Collider[] colliders = Physics.OverlapSphere(explosionPosition, radius);

        // Обрабатываем найденные объекты
        foreach (Collider hit in colliders)
        {
            Debug.Log("Обнаружен объект: " + hit.name);

            // Пример: если объект имеет Rigidbody, добавляем импульс
            Rigidbody rb = hit.GetComponent<Rigidbody>();
            if (rb != null)
            {
                rb.AddExplosionForce(1000f, explosionPosition, radius);
            }
        }
    }
}