本日はアプリ作成枠です。
HoloLens2でホロモンアプリを作る進捗を書き留めていきます。
今回はホロモンのうんちを現在の体長に合わせて大きさを変えるメモです。
ホロモンのうんちを現在の体長に合わせて大きさを変える
以下の記事でホロモンが一定時間でうんちをする実装を行いました。
bluebirdofoz.hatenablog.com
ホロモンはアプリの中で成長して大きくなるので、そのうんちの大きさもホロモンの体長に合わせて変化させるようにします。
実装コード
うんちをスポーンさせる以下のスクリプトに、現在のホロモンの体長の変化率を取得してうんちも合わせて変化させる処理を組み込みました。
・SpawnObject関数
public void SpawnObject(Vector3 a_Position)
{
float holomonRatio = HoloMonConditionBodySingleton.Instance.GetHeightRatio();
ApplySizeCondition(holomonRatio);
p_ModelController.SetPosition(a_Position);
p_ModelController.ShowItem();
}
・ItemShitController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UniRx;
using HoloMonApp.ConditionSpace;
using HoloMonApp.DataFormatSpace;
namespace HoloMonApp.ItemSpace
{
public class ItemShitController : MonoBehaviour
{
<summary>
</summary>
[SerializeField, Tooltip("モデルコントローラ")]
private ItemCommonController p_ModelController;
<summary>
</summary>
[SerializeField, Tooltip("現在のスケール変化比率")]
private float p_ScaleRatio;
<summary>
</summary>
void Start()
{
p_ModelController.Initialize();
p_ModelController.HideItem();
p_ScaleRatio = 1.0f;
}
<summary>
</summary>
void Update()
{
}
<summary>
</summary>
public void ResetObject()
{
p_ModelController.ResetObject();
p_ModelController.HideItem();
}
<summary>
</summary>
<param name="a_Position"></param>
public void SpawnObject(Vector3 a_Position)
{
float holomonRatio = HoloMonConditionBodySingleton.Instance.GetHeightRatio();
ApplySizeCondition(holomonRatio);
p_ModelController.SetPosition(a_Position);
p_ModelController.ShowItem();
}
<summary>
</summary>
<param name="a_GameObject"></param>
public void HitObjectAction(GameObject a_GameObject)
{
ObjectFeatures registObjectFeatures = a_GameObject.GetComponent<ObjectFeatures>();
if (registObjectFeatures == null) return;
switch(registObjectFeatures.Features.ObjectUnderstandType)
{
case ObjectUnderstandType.ShowerWater:
p_ModelController.DisappearItem(1.0f);
break;
default:
break;
}
}
<summary>
</summary>
<param name="a_ScaleRatio"></param>
private void ApplySizeCondition(float a_ScaleRatio)
{
p_ModelController.SetScaleRatio(a_ScaleRatio);
p_ScaleRatio = a_ScaleRatio;
}
}
}
動作確認
シーンを再生して動作を確認します。
開始時の大きさでうんちをするとデフォルトの大きさでうんちオブジェクトがスポーンされます。
次にホロモンを成長させてからうんちをさせてみると、体長に合わせてうんちオブジェクトが大きくスポーンされました。