2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RaycastAllを当たった順番通りに取得する方法をGPT君が教えてくれたお話

Posted at

はじめに

こんにちは! 今回は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));

これで光線が当たった順番にオブジェクトを取得することができました!

おわりに

いかがだったでしょうか。 ぜひ、ゲーム制作にご活用ください~!
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?