0xf

日記だよ

OpenGLこんにちは

以下のようなカーソル位置にアウトラインをひょいっと書くには GLで線を引くのがイメージ通りだった、という話。

f:id:ma2saka:20200517204418g:plain
マインクラフトみたいにカーソル位置にボックスを設置してみた

だいたいドキュメントのサンプルコードを参考にして普通の OpenGL キャンバスとして扱えるのだけど、まあ、やっぱり自由度というかUnityの世界ときちんと連携している自然さがあるかというとない。

とはいえ、この種のちょっとしたオブジェクト同士の連携を表すメッシュやラインを書くのに一つ一つ GameObject 置くのはきっと妥当な使い方ではないだろうし、かといって「困ったらシェーダーを書けばいいじゃない」とはまだ言えないので、とりあえず「いざとなったらGLで直接描画の選択肢もある」という防衛ラインにしよう。

docs.unity3d.com

qiita.com

ところで画像の動作はレイキャストしてぶつかったポイントから法線方向に 1x1x1 のボックスを12本の直線で描画する、クリックされたらオブジェクトを置くというシンプルな実装で済んでいるのだけど、そういうやり方だと絶対にカメラに「見えている」面にしか接してブロックを設置できない。でも、例のマインクラフト本体はもうちょっと柔らかい動きをしている気がして、微妙にこっちに向いていない面にも設置させてオブジェクトを配置できると思うんだよね。そういうところがUIの「手触り」になってくるのだろう。ダブルクリック判定を厳密にやるとすごく使いづらくなって、最初のクリックから少し動いても吸われるようにするとか、そういう。