以下の内容はhttps://www.karvan1230.com/entry/2021/02/16/204036より取得しました。


【Unity】アセット紹介:高速描画アセットLinefyを使って線を引く

バレンタイン中止

今年も自主的にバレンタインが中止だった皆さんこんにちは。近頃では男性の言動で女性が不快に思う事はモラルの問題でなく人権問題として取り上げられるので女性に経済的な負担を強いるバレンタインなんて当然中止です。そのうち満員電車で女性に席を譲らないと差別主義者で糾弾される社会になると思います。怖い、怖い。

 

ゲームクリエータズラボ

去年末に話題となった『講談社ゲームクリエータズラボ』ですが、ついに第一期のメンバーが決定したようです。

daysneo.com

私は残念ながら一次選考で落ちてしまったのですが、こうしたインディゲーム開発者に対する支援企画が立ち上がる事は良い傾向だと思います。

どうやら二期メンバーを今年の秋ごろに募集するらしいのでそれまでに叡智を蓄えておきたいと思います。

 

一線を引く

Twitterで「~に抗議します」「~を求めます」系のハッシュタグをつけて投稿する人には一線を引くために距離を開けますが、Unityでゲーム画面上に一線を引くためにはLineRendererを主に使用します。

私も以前このブログでLineRendererを使った線描画についての記事を書いています。

www.karvan1230.com

まぁ単純に線を描画するなら上の記事でも書いたようにLineRendererで事足りるのですが、完全に個別の線を複数個描画したい場合はLineRendererを持つゲームオブジェクトを描画したい線の数だけ用意する必要があったり、線にTextureを適用したり色をつけたりする場合は個別にMaterialを用意する必要があったりと、使う場面によっては面倒くさい事があります。

なので最近、使い勝手の良さそうな描画系のアセットを購入しました。

上のリンクの概要欄に記載があるようにGPUを使用してLine等の描画を行うらしく

  • 割り当てがゼロの高速動的描画
  • CPU使用率がゼロの最速の静的描画
  • モバイル、WebGLを含むクロスプラットフォームに対応、レンダリングパイプラインに依存しない

等々が主な機能として書かれています。

 

使ってみよう

Linefyで線を描画する場合はLineRendererと異なり、線ごとにゲームオブジェクトを用意する必要はありません

スクリプト内でLinesクラスを生成し、描画する各線(Lineクラス)に始点、終点等の必要な情報を設定した後に、Drawメソッドをコールするだけです。

ただし、DrawメソッドはUpdate、FixedUpdate等で毎フレームコールする必要があります

f:id:Karvan:20210216202601p:plain

上のソースを実行すると

f:id:Karvan:20210216202621p:plain

こんな感じに線が引けます。

各線(Lineクラス)には始点、終点の色や幅を設定することができ、Textureも適用することもできます。(Materialは必要なし)

 

f:id:Karvan:20210216202700p:plain

始点と終点で色や幅を変えた例

 

f:id:Karvan:20210216202717p:plain

Textureを適用した例

 

多角形の線を描画する場合はPolylinesを使用します。多角形を構成する頂点の数と頂点の位置を指定するのはLineRendererと同じです。

f:id:Karvan:20210216202802p:plain

上のソースを実行した結果

f:id:Karvan:20210216202830p:plain

こんな感じ、polylineのisClosedプロパティをtrueに設定すると上のように閉じた図形となります。ここら辺はLineRendererと同じですね。

Polylinesも同様にDrawメソッドを毎フレームコールする必要があります。ちょっと面倒くさいなぁ、と思うかもしれませんが、考えようによってはリアルタイムに線の形状を変えられるという事なので、例えば下のようにオブジェクトの動きを追ってリアルタイムに線を描画する事も簡単にできます。

f:id:Karvan:20210216203026g:plain

 

他にもパラメータを変えて多角形を随時更新するとか、

f:id:Karvan:20210216203127g:plain

 

もうちょっと凝った使い方が知りたい場合は、サンプルシーンとしてグラフの描画やボールの軌跡描画を実装した使用例が内包されているので参考になると思います。

f:id:Karvan:20210216203243g:plain

 

f:id:Karvan:20210216203407g:plain

 

その他の機能

Linefyでは線描画以外にもSpriteをDotsとして扱うことが出来たり

f:id:Karvan:20210216203648g:plain

 

ポリゴンメッシュ(Polygonal Meshes)を生成することが出来ます。

f:id:Karvan:20210216203742g:plain

 

何かと有用っぽいので今度のunity1weekで使ってみようと構想中。。。せっかく買ったし。




以上の内容はhttps://www.karvan1230.com/entry/2021/02/16/204036より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14