本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
今回はホロモンが時間経過でうんちをするメモです。
ホロモンが時間経過でうんちをする
前回、ホロモンが空腹値の減少に合わせて時間経過で小さくなる実装を行いました。
bluebirdofoz.hatenablog.com
この空腹値のチェックではもし空腹値が 1 以上だった場合は空腹値の減少に合わせてうんちの我慢値を増加させる実装を行っています。
体調の管理
以下の体調の監視クラスに我慢値のチェックを追加し、100 以上の値になったらうんちを行う処理を追加しました。
・HoloMonAIConditionLifeStudy.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; using System; using UniRx; using HoloMonApp.ConditionSpace; using HoloMonApp.DataFormatSpace; namespace HoloMonApp.CommonSpace { /// <summary> /// 体調の変化によって行動目的を決定する /// </summary> public class HoloMonAIConditionLifeStudy : MonoBehaviour { /// <summary> /// ホロモンAIの参照 /// </summary> [SerializeField, Tooltip("ホロモンAIの参照")] private HoloMonAICenter p_HoloMonAI; private HoloMonLifeStatus p_HoloMonLifeStatus => HoloMonConditionLifeSingleton.Instance.IReadOnlyReactivePropertyHoloMonLifeStatus.Value; /// <summary> /// 時刻判定(分刻み)のトリガー /// </summary> IDisposable p_MinuteTimeTrigger; /// <summary> /// 開始処理 /// </summary> void Start() { // 一分毎にチェックを行う p_MinuteTimeTrigger = Observable .Timer(TimeSpan.FromSeconds(60.0f - DateTime.Now.Second), TimeSpan.FromMinutes(1.0f)) .SubscribeOnMainThread() .Subscribe(x => { CheckLifeCondition(p_HoloMonLifeStatus); }) .AddTo(this); } /// <summary> /// 体調によるアクションのチェックを行う /// </summary> private void CheckLifeCondition(HoloMonLifeStatus a_Status) { // うんち度のチェックを行う ShitLevel(a_Status.ShitPercent); // 眠り度のチェックを行う SleepinessLevel(a_Status.SleepinessLevel); } /// <summary> /// うんち度の変化に合わせたアクションを実行する /// </summary> /// <param name="a_ShitPercent"></param> private void ShitLevel(int a_ShitPercent) { // うんち度が100%を超えていればうんちを実行する if (a_ShitPercent >= 100) { p_HoloMonAI.RequestPutoutShit(); } } /// <summary> /// 眠り度の変化に合わせたアクションを実行する /// </summary> /// <param name="a_SleepinessLevel"></param> private void SleepinessLevel(HoloMonSleepinessLevel a_SleepinessLevel) { switch (a_SleepinessLevel) { case HoloMonSleepinessLevel.Nothing: // 眠気がない場合 p_HoloMonAI.RequestSleep(false); break; case HoloMonSleepinessLevel.Sleepy: // 眠い場合 // 睡眠の開始要求を行う p_HoloMonAI.RequestSleep(true); break; case HoloMonSleepinessLevel.Drowsy: // うとうとしている場合 // 何も行わない break; } } } }
動作確認
シーンを再生して動作を確認します。
前回記事同様にホロモンにご飯をあげます。
今回はホロモンがお腹いっぱいになるまで与えてみます。
空腹度が一定以上下がるまで待つとホロモンがうんちをしました。