今回はアセットの紹介をしていきます。
紹介するのはMagic Missiles and Lasers。
魔法のミサイルとレーザーが入ったエフェクトアセットです。
現在Sci-Fiをテーマにしたアセット100が50%OFFになる特大セール開催中です。
今回紹介するアセットもこちらのセール対象になっているのでお得に購入できちゃいます。
以下のバナーからどうぞ。6月13日15時59分までとなっています。
どんなアセット?
ミサイルのように追尾する魔法弾とレーザーが入ったエフェクトアセットです。
以下ストアページから引用
完全にカスタマイズ可能なVFX、任意のプロパティを調整して、独自の効果を作成できます。爆発、粒子、残り火、レーザー。これらはすべて個別に使用できます。
ボーナス:メッシュエンチャントシステム(火、ブレージング、エネルギー、プラズマ、エレクトロ)
-11の完全なVFXプレハブ
-5つの大爆発プレハブ
-5つのレーザーショットプレハブ
-28サウンドFX
-100以上のテクスチャとノイズ
-メッシュエンチャントシステム
-さまざまなシェーダーバリアント
-リニアおよびガンマ対応
-スタッフ、プラットフォーム、ロックモデル
-歪みシェーダー
-エッジ検出シェーダー
-シェーダーをディゾルブ
現在、ミサイルプレハブに対する完全なモバイルサポートはありません(レーザーはモバイルで正常に動作します)。私たちは将来のアップデートでミサイルのモバイルサポートを提供します、お楽しみに!
開発環境
Unity2019.3.12f1
Magic Missiles and Lasers ver1.1a
デモシーンの確認
アセットインポート完了時はこんな感じです。

SineVFX/Scenes/DemoSceneがデモシーンです、開いてみます。

同じ階層にあるDemoScene_Gammaがガンマ色空間用のデモシーンのようです。

デモシーンでは、ミサイルの発射とエフェクトの切り替え、昼夜の切り替えができます。
・マウス左クリックでミサイルを発射(ホールドで連射)
・マウス右クリックで大型ミサイルを発射
・画面左下のDAY/NIGHTボタンで昼夜切り替え
・画面左下の矢印ボタンでミサイルやレーザーの切り替え
・マウスの方向に杖が向き、発射されたミサイルが誘導される

ミサイルは全6種類用意されています。
色だけでなくエフェクトにも特徴があります。





主要コンポーネント
このアセットを使いこなすうえで重要なコンポーネントを紹介します。
デモシーンを見てみると、EffectPrefabs直下にFireMissilesなどが置かれているのがわかります。

MouseTarget
FireMissilesについているコンポーネントです。
ただし、これはデモ用のコンポーネントのため、ゲームにそのまま組み込むものではありません。
自分のゲームに組み込む場合は、このScriptの中身を参考にするといいでしょう。

Speed
一見ミサイルのスピードのように見えますが、杖が回転する速度です。
StartWavePS & StartParticles
ミサイル発射時のエフェクトです。
SmallMissiles
ミサイルのエフェクトです。
SmallMissilesCount
ミサイルの発射数の制限です。
BigMissileOne&Two&Three
大型ミサイルの発射エフェクトです。3つまで設定できますが、TwoとThreeは設定しなくても動作します。
HomingParticles
Missilesにアタッチされているコンポーネントです。
こちらはそのままゲームに組み込めます。

Targetに設定されているTransformに向かってミサイルが飛行します。
他のScriptから設定してあげることもできます。
ミサイルを発射するごとにミサイル弾PrefabのようなものInstantiateしているわけではなく、
ParticleSystemをEmitしています。当たり判定もParticleCollisionを使用しているようです。
実際に試してみる
簡単にミサイルを実装できるようPrefabが用意されているので、1からシーンを作ってみます。
シーンを新しく作成し、ミサイルを撃つLauncherとTargetをそれぞれ作成します。

デモシーンにあるMouseTargetはそのままだと使いづらいのでミサイルを発射するScriptを書きます。
MouseTargetを参考に必要な部分はそのままコピペするとよさそうです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Launcher : MonoBehaviour
{
public ParticleSystem startWavePS;
public ParticleSystem startParticles;
public ParticleSystem smallMissiles;
public int smallMissilesCount = 100;
void Update()
{
if(Input.GetMouseButtonDown(0))
{
startWavePS.Emit(1);
startParticles.Emit(smallMissilesCount);
}
if(Input.GetMouseButton(0))
{
var em = smallMissiles.emission;
em.enabled = true;
}
else
{
var em = smallMissiles.emission;
em.enabled = false;
}
}
}
作成したScriptをLauncherにアタッチします。

その後、SineVFX/MagicMissilesAndLasers/Prefabs/CompleteEffects/FireMissilesをLauncherの子オブジェクトにします。
今回はFireMissilesを選びましたがここはお好みで。

FireMissilesの中にあるCursorとStaffは使わないので非アクティブまたは削除します。
また、FireMissilesやEffectのPositionとRotationを0にしておきましょう。

FireMissilesにアタッチされている、MouseTargetとAnimatorも無効化しておきます。
こちらも使いません。

LauncherにアタッチしたLauncherコンポーネントに、以下の画像のようにパーティクルをひもづけます。
それぞれ、発射時のエフェクトとミサイル本体のエフェクトです。

最後に、MissilesにアタッチされているHomingParticlesにTargetをひもづけます。
ミサイルはこのTargetに向かっていきます。

これで完成です。
マウス左クリックでミサイルを単発発射、ホールドで連射します。

他、入力方法を変えたり、ターゲットをロックオンする機能を入れたり、
エフェクト自体のカスタマイズをするなど自分好みに改造していきましょう!
デモシーンもそうですがポストプロセシングと相性がいいです。
アセットに付属しているPost-processing Profileをそのまま使うだけでとてもきれいになります。
Sfi-Fiがテーマですが、魔法使いに撃たせてもカッコイイですね。

ユニティちゃんのアニメーションはこちらを使いました。
その他
着弾後のエフェクトが地形を貫通する時
ElectroMissiles着弾時のエフェクトが地形を貫通することがありました。

これはParticleCollisionの設定が正しくない場合に起こります。
ElectroMissiles/Missiles/Explosion_EmbersのParticleSystemから、

Collisionを選択し、TypeをWorldにすると解決します。

参考資料
今回レーザー部分についてはやりませんでしたが、かもそばさんがunity1weekで活用しているようです。
ParticleCollisionについてはかめくめさんのブログで解説されています。
他のアセットの紹介記事はこちら↓
※本記事にはAssetStoreアフィリエイトリンクが含まれています。
他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。

