Unityでゲーム、アプリ開発

Unityで初めてゲームやアプリを作る人のための支援ブログです。

Unity オブジェクトが落下して地面に触れたら爆発する方法 Unity学習15

今回はオブジェクトが落下して地面のコライダと接触したら
爆発するパーティクルを実行していく方法を紹介します。

※動画での説明がいい方は下記動画をご覧ください。
記事での説明が好みの方はそのまま読み進めてください。

youtu.be


どうも!みなさん今日もお元気ですか!?
ゆうきやんです。

人生は、本当にエラーの毎日ですね。
多分プログラミングやっている人だけでしょう笑笑
さぁ!今日も元気よくエラーかましていきましょう!

って事で本題に行きまーす!



GameObjectが落下して地面に触れたら爆発する方法

f:id:Phoenix9056:20200502030410p:plain

それでは、プロジェクトを3Dで立ち上げてください。

f:id:Phoenix9056:20200325030423j:plain

①のHierarchyにある+⇨3D ObjectSpherePlaneを作ってください。
今回はわかりやすい様にSphereに色をつけていきましょう。



f:id:Phoenix9056:20200325030942j:plain

Project内にあるAssets内で右クリック⇨①のCreateをクリック。
次に、②のMaterialを選択して③のMaterialを作成します。
今回は名前をRedにしましたが好きな名前をつけてください。
※この時点で赤い色がついてますが、すでに設定してあるので、この後設定していきます。



f:id:Phoenix9056:20200325031613j:plain

Assets内にある①のMaterialをクリックして、
Inspector内にある②の部分をクリックして③のcolorを好きな色に設定してください。
そうしたら、①のMaterialをドラッグして④のHierarchy内にあるSphereにドロップしてください。


f:id:Phoenix9056:20200325033030j:plain

次に、エディタ画面上部にある、Window⇨Asset Storeからアセットストアを開き、
True Explosions!を検索窓から探して、ダウンロード⇨インポートしてください。
※アセットストアの使い方が分からない方は下記記事を参考にしてください。
phoenix9056.hatenablog.com



f:id:Phoenix9056:20200325033719j:plain

エディタ画面に戻り、Hierarchy内にあるSphereをクリックして、
Inspector内の一番したにあるAdd Componentから検索窓より、
RigidbodyスクリプトParticle Component、Pseudo Volumetric Component、Exploder
追加してください。
Exploderの白い四角のチェックボックスのレ点は外しておいてください。

設定してある数字も同じ様にしてください。

※Add Componentがよく分からない方は下記記事を参考にしてください。
phoenix9056.hatenablog.com


f:id:Phoenix9056:20200325034804j:plain

①の◉をクリックしてSelect GameObjectから②のAssetsをクリック。
③のExplosionを選択してください。
最後に④も同様な手順でVolumetricを選択して追加してください。
※上記3つのスクリプトはTrue Explosions!に入っていたものです。
次に、もう一つ必要なスクリプトがあるので追加していきます。


f:id:Phoenix9056:20200325041851j:plain

Assets内にで右クリックを押して、①のCreateをクリック
次に②のC#Scriptを選択してスクリプトを作成してください。
今回名前は、ExplosionScriptで作っていきます。


次のコードをコピー&ペーストするか同じ様に記述してください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ExplotionScript : MonoBehaviour
{
    //GameObject型の変数sphereを宣言します。
    public GameObject sphere;

    //Exploder型の変数exploderを宣言します。
    Exploder exploder;

    
    void Start()
    {
        //GetComponentでExploderコンポーネントにアクセスして変数exproderで参照します。
        exploder = sphere.GetComponent<Exploder>();
        
    }
    //SphereがPlaneと衝突したときの処理。
    private void OnCollisionEnter(Collision collision)
    {
        //もし衝突したのがPlaneだった場合、Exproderにチェックを入れて爆発させます。
        if (collision.gameObject.name == "Plane")
        {
            exploder.enabled = true;
        }
    }


}

出来たら保存再生をしてUnityエディタに反映させてください。
スクリプトの作成の仕方が分からない方は、下記記事を参考にしてください。
phoenix9056.hatenablog.com


f:id:Phoenix9056:20200325045408j:plain

最後に、①の先程作ったスクリプトを、②のSphereにドラッグ&ドロップ。
sphereスクリプトが追加され③の部分に、②のSphere
ドラッグ&ドロップして完了です。
再生ボタンを押して再生してみてください。

上手くいったでしょうか??


f:id:Phoenix9056:20200325050523g:plain
成功していると上記の様に爆発してぶっ飛んでいきます笑笑

ちなみにSphereのInspector内にあるExploder(Script)の一番上にある
Explosion Timeの数字を0にすると地面についた瞬間に爆発します。
※今回はDestroy関数を使用していないので、Sphereは残ったままになります

f:id:Phoenix9056:20200325050907g:plain

ご視聴ありがとうでござる。

※このままUnity学習をしていきたい方は下記カテゴリより。
phoenix9056.hatenablog.com

※初心者編の記事はこちらになります。
phoenix9056.hatenablog.com

※オススメのアセットやアセットエラー修正記事はこちら
phoenix9056.hatenablog.com