(第九回)Unityでゲーム開発 仕上げ編①

(第九回)Unityでゲーム開発 仕上げ編①

目次

はじめに
画面UIの作成
スタート画面
ゲームオーバーの仕掛け
次回予告

はじめに

久しぶりの投稿になりましたが、Unity記事の続きを書いていきたいと思います。前回記事では、よりゲームを楽しめるようにアイテムを登場させて、実際に取得したりといった機能を紹介しました。
今回はゲームのスタート画面を作り、そこからゲームがスタートできるようにするのと、ゲームオーバーの実装を少しご紹介できればと思います。

画面UIの作成

まずスタート画面のUI部分の作成をしていきます。
スタート画面は、メインで遊ぶ画面と分ける必要があるので、こちらは新たにSceneを作成します。
File < New Sceneで新規画面を作成できます。
Sceneの名前に関しては、保存時に変更することができます。

上記画面が表示されましたら、ここから自由に作りこんでいきます。
Unity側でUI部分を作成してもよいのですが、無料で画面イメージ画像を作成できるサイトもございますので、
今回はそちらを使っていきたいと思います。

今回私が使用したのは下記のサイトになります。
https://www.canva.com/

アカウント登録は必要ですが、無料版で豊富な画面イメージ画像を作成することが出来ます。
デザインも個人的に気に入っており、豊富なイメージ画像があるのが特徴的だと思います。
では、こちらで実際に作成してみます。

アカウント登録後の画面になりますが、こちらがTOPページになります。
今回ゲームのタイトル画面ということで、検索でゲームと検索するとちょうど良さそうな候補が見つかりました。

こちらの検索結果を開いてみると、タイトル画面にふさわしいものがいくつもあり、選ぶのに悩んでしまいます。

お気に入りのものが見つかりましたら、デザインの編集を行います。文字や画像の位置・変更が出来ます。
最終的に私が調整したものが下記になります。

Unityで自分で作成するよりも、はるかに簡単で、デザインもより良くできていると思います。
ぜひ活用してみてください。

スタート画面

上記で作成した画像をUnityに取り込み、スタート画面を仕上げていきます。
まず画像イメージを入れるオブジェクトとして、Canvasオブジェクトを作成します。
CanvasオブジェクトはUIの配置・描写が可能なオブジェクトとなります。

このオブジェクト配下に先ほど作成した画像を配置します。

サイズ調整や見え方に関しては、後程調整します。
次にスタートボタンの配置を行います。オブジェクトにButtonオブジェクトがあるのでこちらを使います。
作成したオブジェクトは、Canvas配下に置くようにします。

右のInspectorでサイズの調整などを行ってください。
配置に関しては、Posの値でも変更できますが、大まかな位置に関しては、赤枠で囲っている箇所をクリックすると端によせるのかなどが選択できます(altキーを押すと、配置場所を上下左右の端に寄せることが出来ます)
その後微修正などが、楽に修正出来る方法かと思います。

ボタンの文字の変更はどこで行うのかというと、Buttonオブジェクト作成時にその配下にTextオブジェクトが自然にできています。ボタンの文字の変更や文字位置の変更はこちらのオブジェクトで操作が可能となります。

残すはスタートボタン押下後の処理になります。
こちらの処理に関しては、下記のスクリプトで制御します。

//ScneLoadScript.cs
using UnityEngine;
using System.Collections;

public class SceneLoadScript : MonoBehaviour
{

    public void SceneLoad()
    {
        //main = Play画面
        Application.LoadLevel("main");
    }
}

Play画面に”main”という名前をつけたので、こちらの画面を呼び出す処理となります。
スクリプトが完成したら、Buttonオブジェクト配下に入れます。
配置出来たら、ButtonオブジェクトのInspectorの一番下の項目にOn Click()があるので、こちらの+ボタンをクリックし、スクリプトを選び、必要な関数を設定すれば終了です。

また最終回でご紹介しますが、完成品を出力する際はSceneの登録ができていないので、File < Build Settings…で下記の画面を開きます。


未登録のSceneがある時は、赤枠のボタンを押して、Sceneを登録します。またSceneの順番はD&Dで移動できますので、表示順に並び替えを行います。

ゲームオーバーの仕掛け

次回にもまたがる項目になりますが、現状このゲームはゴールもしくはゲームオーバーで終わることが出来ていないです。一般的なゲームは、ゲームクリア→次のステージ or タイトル画面、ゲームオーバー→コンティニュー orタイトル画面といった構成だと思います。
よりゲーム性を出すためにこの辺りもしっかり作っていきたいと思います。

ゲームでは、ゲームオーバーの判定を何にするかといった問題がありますが、このゲームでは、コースから外れて落下したらゲームオーバーとしたいと思います。
今の仕様では、無限に落ちていくので、判定ができません。
ですので、衝突もしくは触れた判定が欲しいので、以前から用意していたゴールにおいていた水のかたまりを落下の判定に使いたいと思います。


水の範囲をかなり広げてみました(真ん中の白い物体がコースになります)
これで落ちたら確実に水に触れることになります。
落ちたときに水に浮いている感じにできるとよりいいかと思い、試行錯誤してみました。

何回かトライしてみましたが、なかなか浮かすことが難しい…
(はじめは物理演算等を考えておらず、突き抜けてしまってました…)
Web上でもいくつか参考になりそうなページがあったので、次回そちらを見ながらこの課題突破できればと思います。

次回予告

そろそろ最終回も見えてきた感じになりましたが、依然として課題がでてきますね….
課題にぶつかるたびにUnityのチュートリアルなどをやると意外にヒントが出てきたりするので、詰まったときなどにおすすめです。
次回はゲームオーバーとゴールの判定その後の処理を作成し、その次の回も含めて、テストコースではなく、ゲームを楽しめるコースを作れたらと思います。