脱出ゲーム
今回で完成させるぞー。
鍵を拾ったら消えるようにする
Inspectorの名前の横のチェックボックスをオンオフすることによって表示・非表示というより有効・無効なのかな?が切り替えられる。それをプログラム的に表現するには
gameObject.SetActive(false);
とする。falseなら消えるし、有効化したいならtrueを入れればよい。で、鍵を消したいためKeyスクリプトに追記するのだが
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Key : MonoBehaviour { public Door door; public void PickUp() { door.flag = true; gameObject.SetActive(false); } }
こうだと、ボタンが消える。これはボタンにこのスクリプトが設定されているからかな?対象を指定しないと自分自身が消えるのかもしんない。鍵の画像を消したいので、変数を用意して対象をつなげて、Unity上で設定する。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Key : MonoBehaviour { public Door door; public Image image; public void PickUp() { door.flag = true; image.gameObject.SetActive(false); } }
これで消えた。
脱出成功の文字を表示する
これはまぁボタンを押したら表示するようにするだけなのでちゃっちゃと
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Door : MonoBehaviour { public Image image; public Sprite sprite; public bool flag = false; public Text text; public void Open() { if (flag == true) { image.sprite = sprite; text.text = "脱出成功!!"; } } }
できた。
番外:ボタンを押したら鍵が表示されるようにする
という機能を作る。画像を読み込みcanvasにImage追加。
ボタンの画像設定。Assetsに新規スクリプトSwitchを作成。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Switch : MonoBehaviour { public Image image; public void Press() { image.gameObject.SetActive(true); } }
表示させたいのでtrueにする。これなんでPushじゃダメだったんだろうね。ていうか番組だとKeyにしてる。これなんでなんだろうなぁ?多分何か説明されてないことがあると思われる。まぁ動くからいいか。ボタンを追加、ボタンにSwitchスクリプトとonClickにPressメソッドを設定。 鍵のInspectorのチェックボックスを外して表示を消しておく。そしたら実行。
できた。が、動画の後半部分を見てわかる通り鍵は表示されていなくともボタンは生きているので虚無を取得し扉を開けることが可能となる。なにこれ。たぶんさっきのImageとKeyの差なんだろうな…。
アレンジ:ボタンに布を被せる
番組をよく見ると布がある。
なんに使うんだろうと思っていたら使わずに終わった。多分だがボタンに被せておいて、クリックしたら取れるのかなあーとか思った。ついでに実装してみる。布じゃなくて紅白帽にしてみた。
これを取り込む。canvas用意して設置するとスイッチのほうがボタンが押せなくなってる。いろいろあって出来上がり。
いぇい!次は何やるんだろうな~。
コメント