本日は Unity の小ネタ枠です。
キャラクターの一部分の大きさを Inspcetor 上のスライダー操作で変更する方法を記事にします。
今回は以下のホロモンモデルの尻尾の大きさをスライダー操作で変更できるようにしてみます。
スケール操作の前提条件
Transform コンポーネントの Scale でモデルの大きさを操作する場合、オブジェクトの原点位置が重要になります。
オブジェクトの拡縮は原点を中心に行われるため、拡縮を行いたい中心位置を予めモデリングソフトで決めておきます。
今回はホロモンモデルの尻尾ボーンを拡縮の中心位置としました。
Inspectorでのスライダー操作
Inspector 上でフィールドの値をスライダーで操作したい場合は Range 属性を利用します。
[SerializeField, Range(0.0f, 2.0f)] private float TailScale = 1.0f;
サンプルクリプト
スライダー操作で尻尾の大きさを即座に変化させる以下のサンプルスクリプトを作成しました。
・ScaleControl.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScaleControl : MonoBehaviour { [SerializeField] private Transform TailTransform; [SerializeField, Range(0.0f, 2.0f)] private float TailScale = 1.0f; private void OnValidate() { TailTransform.localScale = new Vector3(TailScale, TailScale, TailScale); } }
スクリプトをオブジェクトに設定し、[TailTransform]フィールドに先ほどの尻尾ボーンのオブジェクトを指定します。
動作確認
[TailScale]のスライダーを操作して尻尾の大きさを変更してみます。
以下の通り、スライダー操作でキャラクターの一部分の大きさを変更できるようになりました。
この変更はシーン再生中にも行えます。
ただし今回のようにボーンのスケールを操作する場合、アニメーションにスケールの設定があると値が上書きされることがある点には注意が必要です。