「Unityで脱出ゲームの作り方」を写経してみる(5)
前回は、UIボタンをクリックすることにより、カメラを90度ずつ回転するところまでやった。
http://twosquirrel.mints.ne.jp/?p=12272
引き続き、以下のサイトの写経をやっていく。
Unityで脱出ゲームの作り方(5)「3Dオブジェクトをクリックで取得」
2015/06/03 2015/08/02
http://senkouemaki.com/lab/?p=98
(環境)
Windows8.1
Unity5.4.3f1
(1)3Dオブジェクトのクリック判定
Cube の窓をクリックすると、Cubeが消えて、窓から脱出できる設定を考える。
Cube をクリック検出させるための下準備。
Layers > Edit Layers を選択し、User Layer 8 に、新しいレイヤーの名前「clickable」を入れる
ヒエラルキービューで、Cube を選択して、Inspectorビューで、
Add Component > Physics > Box Collider をクリックして、名前をWindowSwitch とする。
Layer を、 Clickable にする。
GameSystem.cs の修正
(下記は、public GameObject selectedGameObject; の、selectedGameObjectのスペルが間違っている。)
ray(光線)が、「カメラ」→「クリックしたところ」にまっすぐレーザーのように撃たれて、最初に当たったオブジェクトを取得するらしい。。。(詳細不明)
if(Physics.Raycast(ray, out hit, 10000000, 1 << 8)) {
の、8 は、layerの8らしく、ここでぶつかったオブジェクトは、 hit.collider.gameObjectで取得できるらしい。。。(ちんぷんかんぷん、なんとなくしかわからない。)
ゲームビューで、▲ボタンを押してから、左に向いて、ウィンドウをクリックすると、たしかに、左下にログが出てきた。
(2)スイッチクリックで3秒後に、windowSwitchを消す。
(3)スイッチが消えたあと、クリア画面に遷移する。
ClearSceneの作成
File > New Scene で、ClearScene という名前で保存。
Create > UI > Text
Window > Asset Store 少し時間がかかる。skybox 無料のみ で検索して、気に入ったものをダウンロード
GameSceneの、GameSystem.cs の修正
(using UnityEngine.SceneManagement; を忘れずに)
File > Build Settings で、Sceneを順番にドラッグ&ドロップ
本当は、CubeをDestroyするまで、何秒間か待つスクリプトをコルーチン???を使って書きたかったが、うまくいかないので、シーンをもう一個作ることにした。
なんか、すごくしっくりこないが、とりあえず、こんな感じで。
(4)いつものスマホ用スクリプト追加。
using UnityEngine; using System.Collections; public class GameDirector : MonoBehaviour { // Use this for initialization void Start () { Screen.fullScreen = false; } // Update is called once per frame void Update () { // プラットフォームがアンドロイドかチェック if (Application.platform == RuntimePlatform.Android) { // エスケープキーを取得 if (Input.GetKeyDown(KeyCode.Escape)) { // アプリケーション終了 Application.Quit(); return; } } } }
なぜかPreClear画面が真っ暗になってしまうバグがあるが
どうだろうか、、、
うむ、なんとか、初の脱出ゲーム作成ができた。。。これは道のりは長そう。。。
ディスカッション
コメント一覧
まだ、コメントがありません