Unityでゲーム、アプリ開発

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

Unity クリックした場所にオブジェクトを複製して、設定時間で消す方法 Unity学習14

今回はクリックした場所にオブジェクトを出現させて、スクリプトから
Inspector内で設定時間を自分で決めて消える方法です

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

youtu.be


どうもゆうきやんです!
そろそろ寒い時期が終わって
タンクトップの季節がやってきましたね!(3月)

それは冗談ですが、生温い風がふく
ちょうど良い感じの季節が
やっぱり好きですね。

さて!本題に入っていきましょう!


クリックして複製した後に設定した時間で消す方法

f:id:Phoenix9056:20200430041458p:plain

今回はマウスの左クリックで球を複製して、消えないと
埋まってしまうので何秒経過したら消えるスクリプト
作っていきます。

始めにプロジェクトを3Dで開いてください。

f:id:Phoenix9056:20200324051839j:plain

まず①のHierarchyの+をクリックします。
3D Object⇨Sphereを作成します。Sphere
ドラッグしてProject内の②Assetsにドロップしてプレハブを作ります。
そうしたらHierarchy内にあるSphereを右クリックを押してDeleteしてください。

※GameObjectの作成、プレハブ化が分かりづらかったら
下記記事を参考にしてください。

phoenix9056.hatenablog.com

次に③の空のGameObjectをHierarchy⇨+⇨Create Emptyをクリックして作成してください。
最後にProjectのAssets内で右クリックを押してC#スクリプトをClickSphereで作成してください。
そうしたら、下記記事をコピー&ペーストするか同じ様にコードを書いていってください。

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

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

    //froat型の変数timerを宣言します。
    public float timer;

    //GameObject型の変数objを宣言します。
    public GameObject obj;

    //Vector3型の変数mousePositionを宣言します。
    private Vector3 mousePosition;

    

    // Update is called once per frame
    void Update()
    {
        //もしマウスの左クリックが押されたら以下を実行します。
        if (Input.GetMouseButtonUp(0))
        {
            
            //変数mousePositionにクリックされた場所の座標を格納します。
            mousePosition = Input.mousePosition;

            //z軸は奥行きを表します。値を小さくするほど手前にprefabが表示され、
            //値を大きくすると奥に表示されます。
            mousePosition.z = 5f;

            //1個以上objが出現したら、決めた時間に消します。
            Destroy(obj, timer);
            
            //Instantiateでprefabを複製して、ScreenToWorldPointでスクリーン座標を
            //ワールド座標に変更します。コレでSphereがクリックした時に表示されます。
            obj = Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition), prefab.transform.rotation);
        }
    }
   }

保存をしてUnity内に反映させてください。
※もしスクリプトの作成の仕方が分からなかったり
Unityにスクリプトが反映されない!って方は下記記事を参考にしてください。

phoenix9056.hatenablog.com


f:id:Phoenix9056:20200324100232j:plain

ProjectのAssets内にある、先程作成したスクリプトをドラッグして、
Hierarchy内にある②の空のGameObjectにドロップします(アタッチ)。
GameObjectをクリックして、

ProjectのAssets内にある③のプレハブ化したSphere
Inspector内にある④のprefabの所にドラッグ&ドロップして追加して、
Timarの部分は自分が何秒で消したいのか数字を入力してください。

コレで完成です!

下記gif画像の様に消えていったら成功です。
やっったね!!!!
f:id:Phoenix9056:20200324101547g:plain

僕が気になったのは一つの知恵として覚えるのは
いいのだけど一つだけだと消えないのが嫌でした笑笑
色々検索したり本読み漁ったのですが泣

まだまだ知らない事ばかりなのでもっと勉強して
みなさんに伝えていきますね!!

次回からは、ゲームで実際に主に3Dシューティング、よくあるFPSゴールデンアイ的なやつにも
使える記事を書いていきたいと思います。

今日の覚えて頂きたいのは、クリックでプレハブの複製とDestroy関数を使った
Gameobject(clone)の削除方法でした。

ご視聴ありがとうございます!

※Unity学習を続ける方は下記カテゴリを参照してください。
phoenix9056.hatenablog.com

※初心者の方、基礎は下記記事より。
phoenix9056.hatenablog.com

※オススメアセットの紹介は下記カテゴリより。
phoenix9056.hatenablog.com