ライスC#やらUnityやらを勉強していて、これはメモっといたほうがええやろ、ということを書くつもりですこの広告は、90日以上更新していないブログに表示しています。2016の十一日目の記事です。(いっと☆わーくす!)でした。私は京大マイコンクラブ(以下KMC)に所属するspi8823と申します。今回は表題の通り、UnityのParticleSystemをドット絵風にする方法についてお話しします。理由あなたはUnityというものを使ったことがあるでしょうか?Unityというのはゲームを作るための開発環境のことで、とても高機能ですがお金儲けをするのでなければ無料で使用することのできる素晴らしいサービスです。このUnityを使用すれば3Dグラフィックスなゲームをとても簡単に作ることができます。2Dのゲームも同じように簡単に開発することができます。System」というものが用意されています。これを用いると例えばこのようなものが作成できます。Systemに用いるための炎や煙の画像があらかじめ用意されています。これらはもともと3Dグラフィックスのゲームで用いるために用意されたもので、画像のサイズは256*256ほどあります。これをドット絵を使用した2Dゲーム内で用いようと思っても、周りのドット絵とうまくなじまないため、少なからず不自然な印象を与えてしまいます。System用の画像を2Dドット絵ゲームで使用するために、高解像度の画像をドット絵風にしてしまう描画機能を作ってしまおうと思い至ったわけです。Shaderさきほど「高解像度の画像をドット絵風にしてしまう描画機能」といいましたが、このように何かをスクリーン上に描画する処理を行っているものを「Shader」といい、プログラムを書いてこの処理を指定することのできる言語を「シェーディング言語」といいます。今回は、このシェーディング言語のうち、「GLSL」というものを書いてドット絵風のパーティクルシステムを実現することにします。用意するものUnityは各自でインストールしていただくとして、Unityで作成したプロジェクトの中に用意するものを列挙します。Shader」を選択して新しいShaderスクリプトを作成しましょう。ファイル名はなんでもいいのでとりあえず「DotPaintingParticleShader」とでもしておきましょうか。MaterialProjecyビューを右クリックし、「Create→Material」を選択して新しいMaterialを作成しましょう。ファイル名はなんでもいいのでとりあえず「DotPaintingParticleMaterial」とでもしておきましょう。Systemをインポートしたりしましょう。やることUnityでGLSLを使用できるようにするまず初めに、UnityでGLSLを使用できるようにしなければなりません。そのため、どこかにUnityの実行ファイルのショートカットを作成し、そのショートカットファイルのプロパティからリンク先の末尾にスペースを入れてから「-force-glcore40」と追記してください。このショートカットを使用してUnityを開けばUnityでGLSLを使用できます。Shaderスクリプトをコピペする先ほど用意した「DotPaintingParticleShader」をダブルクリックしてください。なんらかのテキストエディタが開かれるはずです。その中のテキストをすべて削除し、代わりに以下のスクリプトを貼り付けてください。}}}詳しいことは省きますが、このスクリプトでは画像内の座標や色の値の解像度を下げる、ということを行っています。MaterialにShaderを適用では次に、「DotPaintingParticleMaterial」をインスペクタで開いて、その上に先ほどの「DotPaintingParticleShader」をドラッグ&ドロップしてください。するとこのような表示になると思います。gyazo.comそして、MainTextureという項目に、用意したパーティクル用の画像を適用してください。System」を選択してください。新しいパーティクルがゲーム上に出現したと思います。このパーティクルの上に作成したMaterialをドラッグ&ドロップしてください。するとどうでしょう、いい感じに粗くなったパーティクルが表示されたのではないでしょうか?では、この方法を使わない場合と、この方法を使った場合のサンプルを以下に置いておきます。使用しない場合gyazo.com使用した場合gyazo.com作成したMaterialの、TextureWidthやColorResolutionといった項目を編集することで、描画する際の「粗さ」を調節することができます。みなさんも、このShaderを利用して快適なドット絵ライフを送りましょう!???明日は、id:sorahさんの記事です。KMCMさて、今回使ったシェーディング言語というものですが、やはりこれもプログラミング言語ですのでいきなり初心者が使おうと思い立っても簡単に使えるものではありません。私がこの記事のようなShaderを書くことができたのも、KMCにてGLSLの勉強会を行ったからです。KMCに来ればこんなShaderが書けるようになるということです!!!KMCは京都大学の学生だけでなく、すべての「コンピュータで何かをしたい人」に対して開かれています。Twitter)やメール(info@kmc.gr.jp)で連絡してみてください。(KMC)から例会の日程などを確認することもできます。最後にパーティクル用にって思って書いたけど、よく考えたら(よく考えなくても)このShader、パーティクルに用途限ってないような気がする。おまけ今回はUnityのバージョン5.3を使ったけど、最近バージョン5.5が正式にリリースされました。バージョン5.5では今回使ったパーティクルシステムが結構アップグレードされたほか、「Collabolate」という機能が追加されたりもしました。このCollabolateという機能を使えば、Gitなどのバージョン管理システムを使用せずともゲームプロジェクトのメンバー内での共有ができるようになります。今までUnityプロジェクトの共有にGitを使ってきた人は知っていると思いますが、UnityとGitは相性があまりよくないことで知られていますが、Collabolateを使えばその不自由さから解放されるようです。後日、別途このCollaborateに関する記事を書きたいと思います。Desktopのプレビューが公開されたので使ってみる月別アーカイブはてなブログをはじめよう!spi_8823さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。