CircleCastAllで隣接するオブジェクトを取得したい
隣接するオブジェクトを取得して破壊したい
Unityで以下のような仕組みを作ろうとしています。
・画像のようにボールが溜まる
・タップされたボールは消える
・隣接するボールも一緒に消える
方法として調べた・考えついたものは
1. タップした時にエリアを指定してその範囲内のオブジェクトを消す
2. ボールが消えたら、周囲のボールはあたり判定が変わるはずなのでそこをトリガーにする
といったところです。
2番の方法はOnCollision系を使って試行錯誤していたのですが、
関係ないボールまで消えてしまう問題があり、制御が難しいと判断しました。
現在、CircleCastAllを使って1番の方法を目指していますが、
foreachのところでエラーが出てしまいます。
解決方法、もしくは代替手段があればご教示いただけると幸いです。
初めての質問で、もし至らない点があれば申し訳ありません。
よろしくお願いします。
発生している問題・エラー
error CS0030: Cannot convert type 'UnityEngine.RaycastHit2D' to 'UnityEngine.GameObject'
該当するソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CircleCast : MonoBehaviour
{
public void Update()
{
if (Input.GetMouseButton(0))
{
//rayが発生する地点
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
//circlecastallの設定
RaycastHit2D[] circleCastAll;
circleCastAll = Physics2D.CircleCastAll(ray.origin, 10f, Vector2.zero);
//取得したオブジェクトの破壊
foreach (GameObject target in circleCastAll)
{
Destroy(target);
}
}
}
}
自分で試したこと
下記などを参考にして、スクリプトを修正しました。
https://www.sejuku.net/blog/83620
https://tsubakit1.hateblo.jp/entry/2016/02/25/025922
https://docs.unity3d.com/ja/current/ScriptReference/Physics2D.CircleCastAll.html