いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

Unityでスクリプトを使って線分を描く(初心者向け)

 制作中のゲームで線分を描画したくてネットを調べ、実験して、分かったことをまとめます。
 とにかく初心者には重要なポイントが分かりません。長いコードは見るだけで尻込みすることも。最短のコードで、単機能を実現する例を挙げてもらえれば凄くうれしいのです。
 もうひとつ。インスペクタの設定をこうして、マテリアルを作っておいて、コードをこうして、……とあちこちに気を配ることは初心者には難しいです。優秀なバッターも、守っていることはほんのいくつかなのだと思います。適当ですが例えば「最後までボールから目を離さない」、「脇をしめる」、「顎を引く」、……と5,6個。これを同時にできるようになれば一流です。初心者にとっては「あそこはこう、こちらは……」ではなく、「こういうコードを書きさえすればそれだけでOK!」と教えてもらえるのがありがたい!!
 ……というわけで、次のコードを例えば Start() ルーチンにでも入れてみてください。実践では線分を描画したいタイミングでこれを実行するのです。

        var renderer = gameObject.AddComponent<LineRenderer>();
        var pos = new Vector3[]{
            new Vector3(1f, 0f, 20f),
            new Vector3(10f, 10f, 10f),
        };
        renderer.startWidth = 1f;//線分の太さ
        renderer.endWidth = 1f;
        renderer.positionCount = pos.Length;//与えた点の数
        renderer.SetPositions(pos);

f:id:Inuosann:20210405102224p:plain:w250
 これでとりあえず線分を描けますし、posに点を追加すれば折れ線を描けます。また上の絵ではピンクの線ですが、色を変えることも可能です(特に色を設定しないとこうなるらしい)。線の太さもご自由に。ここまでできればこの先は調べればすぐ分かります。
 カメラの位置によっては線分が見えないことがあります。慌てず、点の位置をカメラの視界に入っていそうな場所にセットし直してみましょう。ちなみにぼくは

            new Vector3(0f, 0f, 0f),
            new Vector3(10f, 10f, 10f),

で実験していて線分が見えず、そうとう悩みました。あ、カメラの位置は原点です。

 ……というわけで例によって最短のコードでした。慣れている人、優秀なプログラマはどんな情報だって活かしてしまうのでしょう。でも初心者はコテコテに飾ったプログラムの大事なポイントを見極めることはできないのです……。