今回はUnity6で「Physics2D.CircleCastAll」を利用して指定した範囲内の敵キャラクターを全て検知するのを実装してみます。
はじめに
使用するのは「Unity 6」のバージョン「6000.0.40f1」、テンプレートは「Universal 2D」です。まずはキーボード入力で動くプレイヤーを作成します。

下記記事で作成した「2Dプレイヤーを上下左右に動かす」を利用しています。
実装開始
まずは敵キャラを作成します。Hierarchyの「+」から「2DObject」→「Sprites」→「Square」を追加。名前を「Enemy」に変更して、サイズと色を変えます。
LayerをEnemyに「AddComponent」から「BoxCollider2D」を追加します。赤色の四角が検知する敵になります。

下記スクリプトを作成します。
using System; using UnityEngine; public class EnemyScan : MonoBehaviour { [SerializeField] private float Range; [SerializeField] private LayerMask targetLayer; [SerializeField]private GameObject[] enemy = new GameObject[10]; private void FixedUpdate() { RaycastHit2D[] hits; hits = Physics2D.CircleCastAll(transform.position, Range, Vector2.zero, 0, targetLayer); Array.Clear(enemy, 0, 10); for (int i = 0; i < hits.Length; i++) { enemy[i] = hits[i].collider.gameObject; } } void OnDrawGizmos() { Gizmos.color = Color.red; Gizmos.DrawWireSphere((Vector2)transform.position, Range); } }
スクリプトをプレイヤーに追加します。パラメータをセットします。Rangeは検知する範囲です。

シーンに表示された赤い丸が検知する範囲になります。

プレイヤーを動かして範囲内に敵キャラクターが入ると検知することが出来ます。パラメータにオブジェクトが格納されたらOKです。

Enemyを複製します。

下記のように全て検知出来たらOKです。
