Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【アセット紹介】Magic Missiles and Lasers ミサイル編【Unity】

今回はアセットの紹介をしていきます。
紹介するのはMagic Missiles and Lasers
魔法のミサイルとレーザーが入ったエフェクトアセットです。

f:id:Raspberly:20200601215605p:plain

 

 

現在Sci-Fiをテーマにしたアセット100が50%OFFになる特大セール開催中です。
今回紹介するアセットもこちらのセール対象になっているのでお得に購入できちゃいます。
以下のバナーからどうぞ。6月13日15時59分までとなっています。

f:id:Raspberly:20200608131225j:plain

 

 

 

どんなアセット?

ミサイルのように追尾する魔法弾とレーザーが入ったエフェクトアセットです。
以下ストアページから引用

vimeo.com

vimeo.com

完全にカスタマイズ可能なVFX、任意のプロパティを調整して、独自の効果を作成できます。爆発、粒子、残り火、レーザー。これらはすべて個別に使用できます。

ボーナス:メッシュエンチャントシステム(火、ブレージング、エネルギー、プラズマ、エレクトロ)

-11の完全なVFXプレハブ
-5つの大爆発プレハブ
-5つのレーザーショットプレハブ
-28サウンドFX
-100以上のテクスチャとノイズ
-メッシュエンチャントシステム
-さまざまなシェーダーバリアント
-リニアおよびガンマ対応
-スタッフ、プラットフォーム、ロックモデル
-歪みシェーダー
-エッジ検出シェーダー
-シェーダーをディゾルブ

現在、ミサイルプレハブに対する完全なモバイルサポートはありません(レーザーはモバイルで正常に動作します)。私たちは将来のアップデートでミサイルのモバイルサポートを提供します、お楽しみに!

 

 

 

開発環境

Unity2019.3.12f1

Magic Missiles and Lasers ver1.1a

 

 

 

デモシーンの確認

アセットインポート完了時はこんな感じです。

f:id:Raspberly:20200601234833p:plain

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

f:id:Raspberly:20200606183053p:plain

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

f:id:Raspberly:20200606192836p:plain

 

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

f:id:Raspberly:20200607130100g:plain


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

f:id:Raspberly:20200607165422g:plain

f:id:Raspberly:20200607170236g:plain

f:id:Raspberly:20200607170540g:plain

f:id:Raspberly:20200607170639g:plain

f:id:Raspberly:20200607170803g:plain



 

 

主要コンポーネント

このアセットを使いこなすうえで重要なコンポーネントを紹介します。

 

デモシーンを見てみると、EffectPrefabs直下にFireMissilesなどが置かれているのがわかります。

f:id:Raspberly:20200607215859p:plain

 

 

MouseTarget

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

f:id:Raspberly:20200607232848p:plain

Speed

一見ミサイルのスピードのように見えますが、杖が回転する速度です。

StartWavePS & StartParticles

ミサイル発射時のエフェクトです。

SmallMissiles

ミサイルのエフェクトです。

SmallMissilesCount

ミサイルの発射数の制限です。

BigMissileOne&Two&Three

大型ミサイルの発射エフェクトです。3つまで設定できますが、TwoとThreeは設定しなくても動作します。

 

HomingParticles

Missilesにアタッチされているコンポーネントです。
こちらはそのままゲームに組み込めます。

f:id:Raspberly:20200608010402p:plain

Targetに設定されているTransformに向かってミサイルが飛行します。
他のScriptから設定してあげることもできます。

 

 

ミサイルを発射するごとにミサイル弾PrefabのようなものInstantiateしているわけではなく、
ParticleSystemをEmitしています。当たり判定もParticleCollisionを使用しているようです。

 

実際に試してみる

簡単にミサイルを実装できるようPrefabが用意されているので、1からシーンを作ってみます。

シーンを新しく作成し、ミサイルを撃つLauncherとTargetをそれぞれ作成します。

f:id:Raspberly:20200609020141p:plain

 

デモシーンにある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にアタッチします。

f:id:Raspberly:20200609021423p:plain

 

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

f:id:Raspberly:20200609021554p:plain

 

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

f:id:Raspberly:20200609021849p:plain

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

f:id:Raspberly:20200609022136p:plain


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

f:id:Raspberly:20200609022608p:plain

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

f:id:Raspberly:20200609022709p:plain

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

f:id:Raspberly:20200609023839g:plain

他、入力方法を変えたり、ターゲットをロックオンする機能を入れたり、
エフェクト自体のカスタマイズをするなど自分好みに改造していきましょう!

 

 

デモシーンもそうですがポストプロセシングと相性がいいです。
アセットに付属しているPost-processing Profileをそのまま使うだけでとてもきれいになります。

Sfi-Fiがテーマですが、魔法使いに撃たせてもカッコイイですね。

f:id:Raspberly:20200609010047g:plain

ユニティちゃんのアニメーションはこちらを使いました。

 

 

その他

着弾後のエフェクトが地形を貫通する時

ElectroMissiles着弾時のエフェクトが地形を貫通することがありました。

f:id:Raspberly:20200609025400g:plain

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

f:id:Raspberly:20200609025353p:plain

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

f:id:Raspberly:20200609025743p:plain



 

 

 

参考資料

今回レーザー部分についてはやりませんでしたが、かもそばさんがunity1weekで活用しているようです。

r-ngtm.hatenablog.com

ParticleCollisionについてはかめくめさんのブログで解説されています。

gametukurikata.com

 

 

 

他のアセットの紹介記事はこちら↓

raspberly.hateblo.jp

 

 

 

※本記事にはAssetStoreアフィリエイトリンクが含まれています。

他、間違っている箇所、わかりにくい所がありましたらコメントにお願いします。