Physics.queriesHitBackfaces を利用すれば Mesh の裏側から Ray を飛ばしてもヒットするとあったので試してみました
検証
処理はこちら、Physics.Raycast
の前に Physics.queriesHitBackfaces = true
をすることで裏面もヒットするようにしています
private void RayTest() { var pos = Vector3.zero; var dir = Vector3.up; var distance = 1f; var ray = new Ray(pos, dir); Physics.queriesHitBackfaces = true; var hit = Physics.Raycast(ray, distance); Debug.Log(hit); }
しかしながら、ログは false になります
Debug で Ray を表示してみても正しく中心から上部に出てるように思えます
原因調査
Unity の Issue Tracker を探していたところ、以下のやつが見つかりました
Physics: Fixed some of the Physics.Raycast overloads ignoring the Physics.queriesHitBackfaces setting. (UUM-9353) First seen in 2023.1.0a4.
いくつかの Physics.Raycast
が設定を無視しているようです、また修正は 2023.1.0a4
以降とあるので 2023.1.0a24
で試してみます
Unity 2023.1.0a24
同じスクリプトで試したところ、無事 true になりました
2020.3.37f1 でも動作してなかったみたいなので、結構昔から発生していたバグかもしれません