●開発概要
-担当:プログラマ
-担当内容:ゲームギミック、UI、ゲーム内オブジェクト一部
-開発期間:2023年12月~完成未定
-開発人数:3人
●開発環境
-ゲームエンジン:unity[2021.3.24f1]
-開発言語:C#
-バージョン管理:GitHub
-エディタ:Visual Studio 2022
-その他:Discord、blender
●動作環境
- OS:windows11
【作品概要】
学校内を徘徊する怪物から逃げ、各部屋のギミックをケータイを駆使しながら解き明かし学校からの脱出を目指す3Dステルスホラーゲームです。
【工夫した点】
■ゲーム内で使用するボタンの処理を2つのスクリプトで行えるようにしました。
1つ目は、ButtonControl.cs内で行うClickEvent発生時の処理です。 buttonManagerのDisButton関数を呼び出し、その際にオブジェクト名を引数として渡すことでボタンの種類を判別行えるようにします。
2つ目は、ButtonManager.cs内で行うボタンの判別とボタン毎の処理です。switch文の条件にDisButton関数呼び出し時に渡される引数を入れることで、どのボタンが押されたのかをcase"ボタン名"で判別し、ボタン毎に処理を分けて行っています。
次の画像のスクリプトは、画面の切り替えの際に実行するChangeScreen関数と関数実行時に変更を行うオブジェクトなどを追加できるButtonDateクラスです。 まず、ButtonDateクラスを[SerializeField] List<ButtonDate>buttonDatesで宣言し追加したラベルとゲームオブジェクト2種類をインスペクター上で設定できるようにします。 そして、ボタン判別後の関数呼び出し時にButtonDate.Type."ラベル名"を引数として渡し同一のラベル名をbuttonDatesから探し出しButtonDateをdataに代入することでインスペクター上で設定したラベルのゲームオブジェクト2種類への変更が可能にしています。 次に、ChangeScreen関数ではdata内のゲームオブジェクトをSetActiveでアクティブと非アクティブを行うことで画面の切り替えを行っています。
■ゲームの明るさを調整する際に同じ画面で確認しながら行えるようにしました。
左側の画面設定の明るさの横のバーを移動させることで環境ライティングのIntensity Multiplierをスクリプト内で変化させることで明るさを調節しています。 右側の画面ではsubCameraを作成し仮の部屋を映し出すことで明るさを確認しながら、自分に合った明るさを調節できるようにしました。
↓実際に明るさを調整している動画です。(オブジェクトが一部仮置きです)
【苦労した点と解決策】
・ギミックに使うパソコンの明かりエリアライトが上手く調節できない... ⇒こちら側に向いているパソコンはマテリアルのEmissionを追加し、奥のこちらを向いていないパソコンはshotライトで調整するとパソコンのライトぽく表現できました。
・モチベーションが保てない ⇒今まで1人で作業を行なっていたが、Discordなどでチームメンバーや友達と相談や 会話しながら作業を行うようになってモチベーションが上がり作業が捗った。
【スクリプト(GitHub)】