Unityで脱出ゲームの作り方(3)「部屋の中を移動する・下準備編」
2015/08/02
このパートでは脱出ゲーム定番の移動ボタンを追加します。
画面上に固定で表示するUIの作成がメインです。
後半ではいよいスクリプトファイルも扱い始めます。
左右回転ボタンを追加しよう
脱出ゲームによくある左右ボタン。ひとまず左ボタンだけを画面に配置してみましょう。
GameObject > UI > Canvasでcanvasを作ります。キャンバスとは、体力ゲージとか所持金などの”UI”を表示するものです。
UIの左右ボタンを追加します
assetの中に予め用意したボタンの画像を入れます。
画像をクリックし、InspectorのTexture Typeを「Sprite(2D and UI)」にし、Applyを押して決定します。
(これをしないと画像をUIボタンに割り当てることができません)
GameObject > UI > Buttonで、UIボタンを新規作成します。
作ったボタンは自動でヒエラルキーのCanvasの入れ子になります。このボタンは「turnLBtn」という名前にします。
turnLBtnのSource Imageに、ドラッグアンドドロップ します。これでボタンの画像は左回転ボタンになりました。
画面に表示はされましたが、サイズが合ってなかったり、よく見ると余計な文字が入っていたりするので正しくしましょう。
ボタンの中にデフォルトで付いてくるTexは今回はいらないので削除します。
インペクターのPreserve Aspect, Set Native Sizeにチェックを入れると正しいサイズになります。
あとはPosXとPosYで位置を調整すれば、理想的な左回転ボタンになります。
スクリプトファイルを追加しよう
ここからスクリプトを書いていきます。ちょっとだけ難しくなるよ!
UnityでのスクリプトはC#とjavascriptの2つがありますが、メジャーなのはC#のようですのでここではC#を使います。javascriptと比べても別に難しくはないはずなので・・!
Assetsの中にcsフォルダを作り(任意)、csフォルダを開いた状態にして、右クリック > create > C# scriptでC#スクリプトを作成します。
名前はひとまずGameSystem.csとしておきます。ゲームの根幹となるスクリプトです。
ダブルクリックするとMonoDevelopperというソフトが開いてスクリプトを編集できるようになります。
(僕はSublime Textを使っていますが・・使い慣れたテキストエディタで大丈夫です)
GameSystem.csをはじめて開くとこうなっていますね
using UnityEngine; using System.Collections; public class NewBehaviourScript : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }
この「public Class」のうしろの「NewBehaviourScript」 をファイル名と同じ名前にします。(下のコードでハイライトになっているところです)
using UnityEngine; using System.Collections; public class GameSystem: MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } }
Unityに戻り、GameObject > Create Emptyで空要素を作成します。GameObjectという名前で作成されます。
このGameObjectを選択した状態で、インスペクターの「Add Component」ボタンの下らへんにGameSystem.csをドラッグアンドドロップします。
これでGameObjectにGameSystem.csスクリプトがひも付けされたことになります。
なぜこれをやったかというと、スクリプトファイルは作っただけでは”動かすひと”がいないので動きません。なのでとりあえず空のゲームオブジェクト要素に割り当てることで、GameObjectさんにはとりあえず”GameSystem.csを動かすひと”になってもらうということです。
ここまでできたら再生ボタンを押してエラーが出ないか確認します。
何も書いていないので特にゲーム内にアクションは起こりません。エラーがあるとConsoleにエラーが出てしまうのですが、何も出なければOKです。
3Dオブジェクトを消してみる
ちょっと本題とそれますが、試しに3Dのステージを消してみましょう。消したり出したりはこの先よく使います。
void Start内に以下を追記します。
void Start () { GameObject.Find("onsen").SetActive(false); //今回は部屋全体は「onsen」という名前 }
GameObject.Find(“名前”)でヒエラルキーにおいてあるオブジェクトを操ることができます。
SetActive(false)で非表示にします。SetActive(true)だと逆に表示させます。
これで再生ボタンを押すと、ゲームが始まった途端に3Dの部屋が消えます。
関連記事
-
Unityで脱出ゲームの作り方(7)「アイテムリストを作る」
前回まででスイッチを押すとカギが降ってくるようにしました。 ここで落ちてきたカギ …
-
Unityで脱出ゲームの作り方(6)「物体を滑らかにアニメーションで動かす」
第6回は物体のなめらかなアニメーション(トゥイーン)を実装します。 脱出ゲームに …
-
Unityで脱出ゲームの作り方(5)「3Dオブジェクトをクリックで取得」
これまでのパートでUIボタンのクリックはできました。 このパートでは上の画像の、 …
-
Unityで脱出ゲームの作り方(1)「3Dの部屋を作る」
Unityで脱出ゲーム講座 初回は3Dの部屋づくりからはじめます。 このパートで …
-
Unityで脱出ゲームの作り方(4)「部屋の中を移動する・UIでカメラ回転編」
第4回はカメラ回転のスクリプトを実際に書いていきます。 上の画像のようにぐるりと …
-
Unityで脱出ゲームの作り方(2)「UnityにSketchupの3Dの部屋をインポート」
第2回からはUnityという今話題のゲーム作成ソフトを使っていきます。 とても高 …
-
Unityで脱出ゲームの作り方(8)「アイテムを選択(装備)する」
アイテムリストクリックでアイテムを装備する アイテムリストのカギをクリックしたら …