8 в вызове Overlap Sphere - это слой, где расположены коллайдеры, используемые для этого управления.
8
и битовая маска уровня # 8 - это не одно и то же.
8
- это просто 8
. Битовая маска слоя # 8 равна 1<<8
или 256.
Кроме того, не похоже, что ваши персонажи находятся не на слое 8, а на слое 0, поэтому, конечно, ваш OverlapSphere вернетсянулевые коллайдеры (если дочерние элементы не находятся на другом слое, скриншот не прояснит это).
Вместо этого вы захотите:
Collider[] agents_near = Physics.OverlapSphere(transform.position, detection_radius, 1<<8);
Так же, как изменение вашего объекта нана самом деле будет на уровне 8 (хотя я бы выбрал другое, поскольку Unity имеет жестко запрограммированное имя слоя 8 как Post Processing
, которое не имеет контекстного значения, которое вы хотите для своих целей).
ИЛИ
Collider[] agents_near = Physics.OverlapSphere(transform.position, detection_radius, 1<<0); //cast against layer 0.
См .: Слои .