切り絵魔法陣でAR幻獣を召喚する方法、第4回は魔法陣のエフェクトの改良方法をまとめたいと思います。

※前回の記事: 魔法陣エフェクトを追加する

ここまでで魔法陣を追加できましたが、
・最初にピカッと光るエフェクトが最初一回しか表示されず、一回カメラを離して再検知しても光らない
・モデルの表示タイミングがちょっと早い(ピカッと光ってからモデルが出現するようにしたい)

という2つの問題があったのでした。
今回、コードを追加して、この2点を解決したいと思います。
※オレオレ流コーディングなので、もしこう書いた方がいいよ!というコメントがありましたら、ぜひお知らせくださいませ。

切り絵を検知するたびにエフェクトを再生させる

ループでずっと再生されているエフェクトは良いのですが、一回限り再生するスパーク的なエフェクトの場合、ターゲットである切り絵を検知するたびにピカッとさせたいですよね。

手順

Hierarchyの中のImageTargetを選択して、Inspectorを開きます。
Add Component > New scriptから、新しいスクリプトを生成します。
ParticleTimingScript.csという名前をつけました。
以下のようなコードを追加します。

やっていることはシンプルで、ターゲットが検知されたらparticle.Play ();を呼ぶようにしています。

コードを書いたら、UnityのEditorに戻って、ImageTargetのInspectorを確認します。
Particle Timing Scriptのところに、Particleという項目が追加されているはずです。

Hierarcheyの中で、ターゲット検出のたびに再生したいパーティクルを選んでドラッグして、上記のMissingとなっているParticleのところにドロップします。
これで完成です!

実際に動かしてみて、ターゲットが画面から外れても、再度検知したらピカッとすることを確認してみてください。


モデルの表示タイミング修正

カメラをかざした瞬間にモデルが表示されてしまうのでなく、ピカッと光った後に出現する方が、よりワクワクしますよね。

手順

Hierarchyの中のImageTargetを選択して、Inspectorを開きます。
Add Component > New scriptから、新しいスクリプトを生成します。
DelayShowModelScript.csという名前をつけました(もうちょい良い命名すればよかった)。
以下のようなコードを追加します。
色々試行錯誤した結果、Invoke関数を呼部ことで、カメラをかざしてから0.6秒後にモデルを表示する、という実装に一旦落ち着きました。
0.6秒というのは、フラッシュのタイミングと合わせて、実際の動作を確認しながら決めた数値です。
これだと、何らかの原因でフラッシュが呼ばれるタイミングがずれると、モデルの表示タイミングがずれるので、フラッシュが呼ばれたらモデルを表示、というのが望ましいのかもしれませんが…私の実装能力ではこれが限界でした。どなたかご教示いただけたら嬉しいです。

コードを書いたら、UnityのEditorに戻って、ImageTargetのInspectorを確認します。
DelayShowModelScriptのところに、Summoned Beastという項目が追加されているはずです。

Hierarcheyの中で、モデルを選んでドラッグして、上記のNoneとなっているSummoned Beastのところにドロップします。
これで完成です!


ここまでの実装

これで、めちゃくちゃカッコいい魔法陣が仕上がりました。
魔法使いになった気分で、とっても嬉しいです。

最終回は、召喚時の効果音をつけてみたいと思います。
最終回はこちらからどうぞ!