プログラムコンテンツへスキップはじめてプログラムプログラミング初心者向けチュートリアルやUnity5やC#の記事を書いています。チュートリアルお手軽魔法陣!Unityのパーティクルシステムは、設定項目が多いので項目を覚えるよりも、よくある仕組みを実際に作ってみながら覚えたほうが効率が良いです。今回は、パーティクルが螺旋で動く魔法陣を作成します。仕組みは簡単この魔法陣の仕組みは実は簡単です。Worldの影響を受ける柱パーティクルを2つ用意する。魔法陣テクスチャをドロップして、魔法陣オブジェクトを作る。魔法陣オブジェクトの子要素として、柱パーティクルを配置する。魔法陣オブジェクトをアニメーションで回転させる。作成チュートリアル作成方法が分かったので実際に実装してみましょう。Inkscapeで512×512で背景透過で作成したpng画像プロジェクトの作成まずは、ParticleSpiral02など適当な名前3D用プロジェクトを新規に作成します。フォルダーをいくつか作成して、上記の画像などをTexturesフォルダーに配置します。上記魔法陣の画像は、背景透過のpng画像です。(このブログでは、透明の画像で魔法陣の線が白のため何も見えなくなるので、CSSを黒くしています。UI)]にして[Apply]で適用します。Cubeを作成し、先ほどのMagicCircle画像をシーンにドロップします。MagicCircleのRotationをx:90にして、Cubeの子要素にします。RendererコンポーネントのColorで変更できます。そもそも魔法陣の画像をライトグリーンにしてしまう方法などもあります。画像を白にしておくと、Unity側でいろんな色のパーティクルと組み合わせやすいです。ぽわぽあしているパーティクルの作成まずは魔法陣の近くのホタルのようなぽわぽあしたパーティクルを作成します。Systemモジュールの各種値を変更します。Lifetime](=生存期間中のサイズ)モジュールにチェックして、曲線を編集します。実際に使ってみてもらえば分かりますが、ダブルクリックで点を新規に作成してそれを動かすことで曲線を動かせます。右クリックから点の削除も可能です。この図の見方は、横軸が時間で、0.0から1.0で表現しています。左がParticleSystem開始時で、一番右が終了時になります。縦軸はSizeを0.0から1.0で表しています。よって、上記曲線の場合は、開始時に1=100%の大きさで、終了時に、0=0%の大きさになるが、大きさは曲線の変化によって徐々に小さくなるようになります。右の点を、縦軸の1.0に持ってくると、上記画像のように直線になります。この場合は、開始から終了まで、Sizeが1.0なので小さくなっていきません。実際に何回も試してみましょう。Spaceは、Worldに変更すると、移動したときにパーティクルが揺らぐようになります。魔法陣を回転させると、パーティクルも螺旋を描くようになります。Emissonモジュールで、一度に放射する量を調整できます。100の場合は、一回に100個のパーティクルを放射します。Shapeモジュールで、放射する形を変更します。初期設定では、コーン型(メガホンのような形や、傘のついた街灯)なので、Angle角度と、Radius半径を小さくして、棒状に放射するようにします。lifetime]で、開始時のサイズを小さくし、途中大きくし、終了時に小さくするようにします。綺麗に変形すればろうそくの火のような感じにもできます。これで柱パーティクルが1つ出来たので、コピーして位置を変更してもう1つ作ります。これはParticleSystemの仕組みではなく、単純なUnityのアニメーションです。Animationビューを表示して、HierarchyからMagicCircleを選択すると、[Create]ボタンが表示されるので、これでアニメーションを作成します。Property]ボタンでRotationを選択して、1:00(終了時)を360の倍数にします。これで、螺旋を描くパーティクルが作成できました。この時点でゲームをプレイしてみると、起動と同時にアニメーションが実行されるのが確認できます。最後にボタンをクリックしたときに発動するようにしてみましょう。ボタンをクリックしたときに魔法を発動させる。ボタンを押したときに、魔法陣を回転させて、パーティクルを一斉に起動したいのでC#スクリプトで制御します。これはMagicCircleオブジェクトの親のCubeに割り当てます。魔法陣の親オブジェクトに配置するスクリプト。子供のすべてのパーティクルを取得。保険として、ゲーム開始時にパーティクルを一度停止させる。これで魔法陣が回転する。魔法陣の親オブジェクトに配置するスクリプト。子供のすべてのパーティクルを取得。保険として、ゲーム開始時にパーティクルを一度停止させる。これで魔法陣が回転する。();}}}ボタン作成Hierarchyビューで右クリックして、[UI]->[Button]でボタンを作成します。ボタンのクリック時にMagicCircleスクリプトのDoMagicが実行されるようにします。状態遷移の完成図まだ、Waitアニメーションがないため新規に作成します。これは何もしないアニメーションで、”DoMagic”トリガーが実行されるまでここで待機するために用意します。Clip...]で作成します。Clip...となっています。Property]でPositionなどなんでもよいので選択して追加します。待機用に用意したので値は変更しません。トリガー作成トリガーは銃の引き金と同じで、これを実行するとアニメーションを実行するようにするフラグにします。C#スクリプトでは、GetComponent<Animator>().SetTrigger(“トリガー名”);のようにすれば、スクリプトから操作できます。そのためボタンを押したタイミングでこのスクリプトを実行すればアニメーションを動かせます。上記のGifでは、新規にHelloTriggerトリガーを作成しましたが、DoMagicトリガーを新規作成すればよいです。State]により、起動時にWaitアニメーションが呼ばれて何もアニメーションしないようにします。Transition]を選択すると、線を引けるようになるので、上記のようにRotateからWait,WaitからRotateに遷移できるようにします。Time]をチェックしないと、Waitアニメーションの終了を待たずにRotateへ遷移します。ConditionsにDoMagicトリガーを指定し、DoMagicトリガーが有効になったとき、Rotateアニメーションへ遷移します。Transitionsこちらは特に細かい指定は合ってもなくてもよいです。Awake*]項目のチェックを外します。これは、最初に外しておくべきですが、このチュートリアルの画像では外すのを忘れてしましました。これを外しておかないと、ゲーム開始時に必ずパーティクルが実行されてしまいます。完成このプロジェクトの配布Unity5.4http://hajimete-program.com/games/ParticleSpiral.zipエクスプローラーからMain.unityをクリックして、Unityを起動すれば、Mainシーンが表示されます。この記事と箱となり、プロジェクトのボタンの位置やボタン名など若干変更しています。チュートリアルにコメントUnityで雪パーティクルエフェクトを作成しましょう。Unityにはパーティクルシステムがあるので、Unityエディター上でパーティクルを作成できます。設定項目が多いので、項目はたくさん作って覚えていくしかありませんが、雪のパーティクルはいろんな項目を使って作れるので初心者に最適です。Systemでオブジェクトを作成します。Xを-90にしておきます。Modifierで、重さが決まるので、ここをいろいろ調整しましょう。した感じがほしいのでひとまず0.13にしました。EmissionRateは一度に降る量です。この項目を増やすときは、1つ注意が必要です。Sceneビューで以下のようなダイアログがあるので、Pause(一時停止)またはStop(停止)をしてから修正しましょう。30から間違えて3万にした場合、かなり強力なPCでないとUnityがフリーズ状態になり数分しないと応答が返ってこない状態になります。ShapeRadiusで、この円内に雪を降らせます。Lifetime生存時の速度。以下のように、X,Y,Zの速度調整ができます。前後左右にゆらゆらしたいので、XY座標はある一定のランダムの値を取らせたいです。Curvesを選択します。画面右下に、以下のような曲線(Curve)が表示されます。Keyを表示して追加するか、線上でダブルクリックをすると、キーが用意されます。これはキーボードのDeleteキーで削除できます。右クリックして、コンテキストメニューからキーを作成できる。このキーを上下左右に動かす事で曲線を作成します。曲線を作成している様子X座標は、この上部、下部の2つの曲線内の値をランダムに取るため、雪が左右に揺れることになります。Y座標も同様に適当に曲線を用意します。lifetime生存時の色。Editorが表示されます。画像の赤枠内はアルファチャンネルで、クリックすると矢印が追加されます。Deleteキーで削除できます。矢印を用意したら、Alphaを0-255に設定します。今回は設定しませんでしたが、画像の緑枠内は、カラーで、ここもクリックして矢印キーを追加して、Deleteキーで削除できます。こちらの矢印を選択するとカラーが表示されるので、そこから色を変更できます。これにより、白から赤へのグラデーションなどを作成できます。Lifetime生存時の大きさ。これも雪のふわふわした感じを作るために、2つの曲線で適当にキーを用意して作ります。Lifetime生存中の回転。Curvesで、いろんな動きにすると面白いはずです。今回はCurveで1つの曲線に適当にキーを用意しました。Collision今回はPlanesに何も指定してませんが、ここに対象を指定したりするとそこでとどまったりします。Groundを用意してそのオブジェクトを指定すれば、そこに衝突します。Bounceは小さくしないと、ボールのように跳ねてしまいます。RendererMaterialで任意のマテリアルを設定できますが、今回は初期設定のままです。パーティクルシステム(Shuriken)このプロジェクトの配布Unity5.4http://hajimete-program.com/games/ParticleSnow.zipまとめ今回は、細かい説明をせずに、まずは作ってみました。パーティクルシステムは項目が多いため、人が作ったものを自分で同じように複製して見たり、繰り返し項目を変更していくと自然と項目がわかってきます。スタンダードアセットの爆発パーティクルなどは複数のパーティクルを組み合わせて1つの爆発にしているので非常に参考になります。雪Unityで雪パーティクルエフェクトを作成しましょう。最近の投稿CocosCreator2.0で廃止(Deprecated)されたもの。60行でタイピングゲームを作ろう!Python3+Tkinterでタイピングゲームを作ってみました。PythonでSetIntervalとSetTimeoutと同じようなことがしたい。