MRが楽しい

MRやVRについて学習したことを書き残す

キャラクターの一部分の大きさを Inspcetor 上のスライダー操作で変更する

本日は Unity の小ネタ枠です。
キャラクターの一部分の大きさを Inspcetor 上のスライダー操作で変更する方法を記事にします。

今回は以下のホロモンモデルの尻尾の大きさをスライダー操作で変更できるようにしてみます。
f:id:bluebirdofoz:20220411234104j:plain

スケール操作の前提条件

Transform コンポーネントの Scale でモデルの大きさを操作する場合、オブジェクトの原点位置が重要になります。
オブジェクトの拡縮は原点を中心に行われるため、拡縮を行いたい中心位置を予めモデリングソフトで決めておきます。
f:id:bluebirdofoz:20220411234116j:plain

今回はホロモンモデルの尻尾ボーンを拡縮の中心位置としました。
f:id:bluebirdofoz:20220411234126j:plain

Inspectorでのスライダー操作

Inspector 上でフィールドの値をスライダーで操作したい場合は Range 属性を利用します。

    [SerializeField, Range(0.0f, 2.0f)]
    private float TailScale = 1.0f;

docs.unity3d.com

サンプルクリプト

スライダー操作で尻尾の大きさを即座に変化させる以下のサンプルスクリプトを作成しました。
・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);
    }
}

f:id:bluebirdofoz:20220411234138j:plain

スクリプトをオブジェクトに設定し、[TailTransform]フィールドに先ほどの尻尾ボーンのオブジェクトを指定します。
f:id:bluebirdofoz:20220411234150j:plain

動作確認

[TailScale]のスライダーを操作して尻尾の大きさを変更してみます。
f:id:bluebirdofoz:20220411234203j:plain

以下の通り、スライダー操作でキャラクターの一部分の大きさを変更できるようになりました。
f:id:bluebirdofoz:20220411234214j:plain

この変更はシーン再生中にも行えます。
ただし今回のようにボーンのスケールを操作する場合、アニメーションにスケールの設定があると値が上書きされることがある点には注意が必要です。
f:id:bluebirdofoz:20220411234224j:plain