質問: ### 前提・実現したいこと ワールド座標(モデルのボーン位置)をスクリーン座標に変換して、 変換した座標を使ってランタイムでCanvasに線を引くということをしていました。 結果が以下の画像で、黒い線が変換した座標を使って引いた線です。 テストでユニティちゃんの両腕のボーン位置をスクリーン座標に変換しています。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/797bb4ef3c43a60cdaba185ab330ff61.png) 次のステップアップとして、 以下の画像のように、奥行きを考慮した線を引きたいです。(画像編集しました。) ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/952f695401f51c73e875ed4e7d6f86ba.png) Canvasに奥行きを考慮した線を引くにはどのような実装をすればよろしいでしょうか。 「Canvasじゃできないよ!」という回答もお待ちしています。 ### 補足情報(FW/ツールのバージョンなど) Unityのバージョンは、 2019.2.11 CanvasのRenderModeは、ScreenSpace - Overlay Canvasに線を引くプログラムはこちらを引用しました。 【】 念のためデプス画像を貼ります。 ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/655391c29813093ce1be24a082089a28.png)
回答: 前後関係を考慮して線を引くには、ユニティちゃん側の奥行きだけでなく線の奥行きも必要なはずです。ですが、あちらの回答に例示しましたLineStripは2Dの線を引くことを想定したものなので、あれを使って実現したいとなるとスクリプトの改造が必要になりそうです。 Canvas上にLineStripで描画するのではなく、LineRendererによる方法なら適しているように思いますが、いかがでしょうか? LineRendererの線は三次元空間上の線なので奥行きも持っており、デプステストを行うタイプのマテリアルをセットしてやれば正しく描画されそうです。ただし、ユニティちゃんの関節の座標そのものを使うと線が腕に埋もれてしまいそうですので、カメラの方向へ少しずらしてやらないといけないかもしれません。