実現したいこと
マス目の世界で上下左右の動きに対応したAスターアルゴリズムを実装したい
前提
unityでAスターアルゴリズムを実装し 移動コストGの算出と壁があるかどうかの判定をレイキャストを使用し行えるように実装しました マス目と座標の整数部分が対応しておりpos_sun で少しずらし真ん中通るように短いレイをだします
その際 レイキャストが正しく飛んでいるかかくにするためebug.DrawRayも一緒に飛ばしたのですが
視認できるかぎりは正常に飛んでいるのですが 全然違う場所にある壁を取得してしまい壁判定が出てしまいうまく機能しません 右斜め上に10マス以上も離れたオブジェクトを取得してしまっています(debug.DrawRayでは何にも触れていません)
該当のソースコード
private Vector3 pos_sun = new Vector3(0.5f, 0.5f,0); public string GetCollisionObjectName(Vector3 position) { RaycastHit hit; //return null;**ボールドテキスト** // レイを飛ばす //Debug.Log(position + pos_sun); Debug.DrawRay(position + pos_sun/2, pos_sun , Color.red); if (Physics.Raycast(position + pos_sun / 2, pos_sun, out hit)) { // レイが何かにヒットした場合はヒットしたオブジェクトの名前を返す if (hit.collider != null) { return hit.collider.gameObject.name; } } // ヒットしなかった場合はnullを返す return null; }
試したこと
右斜め上に10マス以上も離れたオブジェクトを取得してしまっていますとある通り方向は想定通りに動いていると思い(正しく見えないので確かめられていない)
Physics.Raycast(position + pos_sun / 2, pos_sun, out hit,0.5f)
距離を明示的に追加したのですが今度は壁があるのに取得しなくなりました
補足情報(FW/ツールのバージョンなど)
unity2018
unity2dを使用していますが 壁は3dオブジェクトです
ここにより詳細な情報を記載してください。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/07/24 09:06