makeagame’s blog

UnityとVroidに関する情報を掲載しています。

Unityでゲームを作ろう!-テンプレートを弄ってみよう-

この記事でわかること

・Unityの専門用語

・Unityのスクリプト

・Unityの無料テンプレートを弄る方法

 

この記事はこんな人向け

・Unityに興味がある方

・Unityのプログラムに興味がある人

・Unityでゲーム作りをしてみたいと思っている方

 

今回は前々回に見せたブロック崩しのテンプレートにさらにちょっとしたゲーム要素を追加してみたいと思います!

 

前回はこちら

https://makeagame.hateblo.jp/entry/unitycanvas

 

ゲーム要素を追加する……。

ちょっと考えるだけでワクワクしますね!

とはいえ、無理のない範囲で……そこまで凝ってる感じではないやつ……。

 

ということで、とある条件の時にとある文字が出るなんてのはどうだろうかと考えてみた所存です。

 

いうなれば、ゲームクリアしたときに、ゲームクリアと表示するようなのはどうでしょうか。

 

ゲーム作りの醍醐味、ちょこっと改良ですね!

これが積み重なって個性になっていくわけですが……その第一歩をUnityで表現したいと思います。

 

早速【Game Clear】の絵を追加したいと思います。

 

素材集めは何を使っているか……。

Google先生に「Game Clear フリー素材」で検索してみましょう。

Youtubeなどの動画サイトへアップするなども視野に入る方は商業利用OKかどうかの確認も大事ですね。

 

私はよく「イラストAC」様も利用させてもらっています。

メンバー登録と回数制限はありますが、質の高いイラストを無料で使用することができるからですね。

今回はこちらの画像を参考にさせていただきました。

 

では早速、ゲームクリアしたときにこちらをつけてみましょう!

 

結果はこちらです!

 

 

ここで行ったことは3つです。

 

・どこで"ゲームクリア"となっているか

・ゲームクリア画像の配置

・ゲームクリア画像の移動

 

となります!

 

どこで"ゲームクリア"となっているか

では前々回から登場している「Block Breaker Template」の中身を見ていきましょう。

ゲームクリアはどこで制御されているのでしょうか?

それがこちら!

Unity Win Screen

左側の<Hierarchy>の[Camera]の中にある[Canvas]にありました!

 

しかし、今は非表示状態になっているので、表示させてみましょう。

Unity Win Screen02

<Hierarchy>で[WinScreen]を選択した状態で、<inspector>の下にあるチェックマークを付けて表示させます。

 

すると<Hierarchy>上で[WinText]、[TryAgainButton]、[MenuButton]が出現しました。

ここに、あの画像を追加してみましょう。

 

ゲームクリア画像の配置

適当に[Game Clear]の画像だけ用意しました。

Unity Game Clear

この画像をゲームオブジェクトとして読み込ませてみました!

 

Unity Game Clear 02

ちょっと整えて……。

Unity Game Clear 03

こんな感じにしてみました!

ドット絵はゲームのシックな感じにぴったりでしたね!

でもこれだけじゃ少し物足りないですよね……。

そこで、この[game clear]オブジェクトを少し動かしていきたいなぁと思います。

 

ゲームクリア画像の移動

スクリプトを組んでオブジェクトを動かして行きたいと思います!

Unity Add Script

"コンポーネントを追加"→一番下まで行って"New Script"→名前を付ける

ことでスクリプトを作ることができます。

今回は"transport"という名前にしました。

すると、"transport.cs"というデータが作られるので、そのデータにスクリプトを書き込んでいきます。

 

今回はこんな感じです!

Unity script

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

public class transport : MonoBehaviour
{
    private bool flag;

    void start()
    {
        flag = false;
    }
 
    void Update()
    {        
        if(flag==true)
        {
            transform.position -= transform.up * Time.deltaTime;
            if(this.transform.position.y<0.001f)
            {
                flag = false;
            }
        }
 
        else
        {
            transform.position += transform.up * Time.deltaTime;
            if(this.transform.position.y>=1.1f)
            {
                flag = true;
            }
        }
    }
}

上下に動かしたいので”transform.up”を使いました。

これはY軸を中心にして上下しているのでYの値が変わっていきます。そこで、if文を用いて強引に切り替えていきました。

 

まだまだ私も初心者ですのでこういう方がすごくわかりやすいですね。

Time.deltaTimeがあるとゆっくりな動きになりましたね。まぁ場合によるんでしょうけど。

 

いやーなんか<Inspector>上のY軸とDebug.Logで表示させた数字が一致してなくてよくわからないことになっていたのはまぁ親オブジェクトとか子オブジェクトとかその辺がかかわってきそうですね。if文で条件付けするんなら、<inspector>の数値ではなく、Debug.Log上の数字ですね。いやはや。やはりDebug。Debugはすべてを解決する。

 

と、いうことでちょっと上下にオブジェクトを動かすスクリプトでした!

またUnityに関する情報をお伝えしますね!それでは!