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);
}
}
}
}