原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

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

バレンタイン中止

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

 

ゲームクリエータズラボ

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

daysneo.com

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

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

 

一線を引く

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

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

www.karvan1230.com

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

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

assetstore.unity.com

上のリンクの概要欄に記載があるように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で使ってみようと構想中。。。せっかく買ったし。

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。