【脱出ゲーム】Unity簡易スライダーギミックの実装と宴連携
本日は脱出ゲームで使えそうな
Unityの簡易スライダーギミックの実装例です。
開発中の為、ギミックを解くと人形が獲得できるようになっています。
ギミックの解答とキャラの会話は全て宴から取得しています。
開発中の為、演出などは一部調整中です。
基本的にUIの設定は割愛しますがUnityのスライダーをほぼ初期設定で使っています。
Handleのアイコンは素材を設定しています。
inspectorの設定例です。
動画のように4つのスライダーをそれぞれ用意しています。
左から1、2、3,4のスライダー値を赤、黄色、オレンジ、紫、の4つのスライダーで持っています。
そして、スライダーのOn Value Changeで都度スクリプトを実行させて値を確認し、判定させています。スクリプトは以下です。
[SerializeField] Slider slider0;//red
[SerializeField] Slider slider1;//yellow
[SerializeField] Slider slider2;//orange
[SerializeField] Slider slider3;//purple
[SerializeField] GameObject sliderGroup;
public void SliderGetValue()
{
//SLiderGroup0
//SLiderGroupのnameでいくつ目のSliderGimmicKかを判定
int SliderGimmickNum = int.Parse((sliderGroup.name).Substring(11, 1));
//宴から回答を取得
string Answer = EscapeParamUtageGet.instance.SliderGimmickAnswer(SliderGimmickNum);
Debug.Log("答え"+ Answer);
int Anser0Int = int.Parse((Answer).Substring(0, 1));
int Anser1Int = int.Parse((Answer).Substring(1, 1));
int Anser2Int = int.Parse((Answer).Substring(2, 1));
int Anser3Int = int.Parse((Answer).Substring(3, 1));
if (slider0.value == Anser0Int && slider1.value == Anser1Int && slider2.value == Anser2Int && slider3.value == Anser3Int)
{
//正解
Debug.Log("正解");
GimmickSucess();
}
else
{
Debug.Log("不正解");
GimmickFailureScenario();
}
}
宴からは下記関数でスライダーギミックの解答を取得しています。
public string SliderGimmickAnswer(int SliderGimmickNum)
//SliderGimmickの答えを返す
{
//SliderGimmick0_Answer"
string Answer =
Engine.Param.GetParameterString("SliderGimmick" + SliderGimmickNum+ "_Answer");
return Answer;
}
宴の設定値ですがParamシートの指定は下記です。
答えは2344です。 SliderGetValueの中のint.Parseで
「2」(赤)「3」(黄色)「4」(オレンジ)「4」(紫)の解答として
IF文判定しています。宴を除ければ基本的にはスライダーのsliderxx.valueで
値を取得しているだけなのでかなりシンプルにスクリプトを書けます。
ギミック正解、不正解時にシナリオを再生させていますが
そちらは別の機会に紹介します。
宴のアセットは下記です。
本日は以上となります。少しでも参考になれば幸いです。