はじめに
こんにちは! 今回はRaycastAllに関するめちゃくちゃ良いシステムをまたもやGPT君が作ってくれたので紹介したいと思います!!RaycastAllについて
RaycastAllは簡単に言うと、始点となるオブジェクトから指定した方向に指定した距離で光線(Ray)を放ち、その光線と接触したオブジェクトをすべて取得するといったメソッドです。↓RaycastAllについて
しかし、このメソッドには問題があります。
光線が当たった順番通りにオブジェクトを取得しない!!
これは何とかしたい。
という事で例の如くGPT君に聞きました。
GPT君の回答
「Physics.RaycastAll を使用して衝突したオブジェクトを処理する場合、必要に応じてオブジェクトをソートするか、他の方法で順序を管理する必要があります。たとえば、衝突したオブジェクトの距離に基づいてソートすることが一般的な方法です。」
なるほどね。
距離に基づいてソートしちゃえばよかったらしいです。
そして教えてくれたコードがこちら
using System;//Sortメソッドを使用するために必要
RaycastHit[] hits = Physics.RaycastAll(始点, 方向, 距離);
Array.Sort(hits, (x, y) => x.distance.CompareTo(y.distance));
これで光線が当たった順番にオブジェクトを取得することができました!