LemonteaのUnity部屋

LemonteaのUnity部屋

UnityとかC#のおはなしです~

初めてのUnity(7) ゴール

こんにちは。レモンティーです。

ゴールの作り方だけみたい場合はコチラ↓のほうがいいかもしれません
sawalemounity.hatenablog.com

以下、前回の続きでゴールをつくっていきます。

予告通りゴールを作って、飾り付け以外の基礎は
ひとまずおわります。
ビルドのやり方を次回解説します。

今後は、
アニメーションやUIなどの飾り付けや、
後回しにしていたスクリプト
自作モデルの作成とインポート
について書きたいと思います。

さて、今回の内容に入りましょう。

まずはゴールの作成です。

ちょっとマニアックですが、このシリーズで作っていたのは
遊●王の漫画にでてくるDe●th-Tです。
社長が主人公に復讐するためにつくりあげた
死のテーマパーク…でしたね。
その三番目のアトラクションがこれでした。(壁を忘れていましたが…)

なのでゴールは上の方に作ります。
ブロックに潰されないように、
重なっていくブロックを登って
ゴールを目指すゲームです。まんまですね笑

ただ、壁がないのでゴールは半透明のオブジェクトで表します。
Create>3D Object>Cube で、Cubeをつくります。
↓のようにお好みの形にして、高さ(y座標)を5くらいにします。

f:id:sawalemontea:20170803222256p:plain

そしたら、↓を参考に、少しスケスケにします。
色はお好みで。

sawalemounity.hatenablog.com



こんな感じに

f:id:sawalemontea:20170803222318p:plain

そうしたら、CubeのタグをFinishにします。

そして、例のごとくスクリプト丸コピです。
PlayerMoovを全部消してこれに置き換えてください。

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

public class PlayerMoov : MonoBehaviour {
    int OnFooting = 0;
	// Update is called once per frame
	void Update () {
        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if(OnFooting == 1)
            {
                GetComponent<Rigidbody>().AddForce(Vector3.up*5,ForceMode.Impulse);
                OnFooting = 0;
            }
        }
        Vector3 Direction = new Vector3(x, 0, z)*0.15f;
        GetComponent<Rigidbody>().AddForce(Direction, ForceMode.VelocityChange);
        Direction = Vector3.zero;
        if(transform.position.y <= -10)
        {
            SceneManager.LoadScene("GameOver");
        }
	}

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.tag == "GameOver")
        {
            SceneManager.LoadScene("GameOver");
        }

        if(collision.gameObject.tag == "footing")
        {
            OnFooting = 1;
        }

        if(collision.gameObject.tag == "Finish")
        {
            Debug.Log("クリアです!!");
        }
    }
}

これで実行すれば、クリアした時に

f:id:sawalemontea:20170803222336p:plain

みたいにメッセージがでます!
GameOverみたいにシーンを作って飛ばしてもいいですね!

これでひとまずおしまいです。

関連

ビルド
sawalemounity.hatenablog.com

スクリプトシリーズ
sawalemounity.hatenablog.com

sawalemounity.hatenablog.com

前回
sawalemounity.hatenablog.com