Unity6 Cinemachine3でFPS風視点作り2

Unity

前回はカメラ設定をしていざ実行したところ微妙なカメラワークだったので今回は改善を試みようと思います



設定を変えてみる

色々と項目に選択肢が設けられているので1つずつ変えていって試行錯誤をするも・・・

もふもふ
もふもふ

酔う(;゚Д゚)

なかなか良い挙動に巡り合えずでしたが、良さそうな項目を発見したので記します

Procedural ComponentsをPosition Composerに変更すると・・・

これが正解かは分かりませんがかなりいい感じになってくれました!

ちなみにカメラはInput Axis Controllerの影響でマウス移動とリンクしているので自由に動かすことが可能ですが、デフォルトだと地面の中まで行けてしまうので

Cinemachine Pan Tiltコンポーネントでカメラの移動範囲を指定します

Panが横方向Tiltが縦方向になっており、今回はTiltの範囲を-15~70にすることで地面に埋まるのを防いでいます

しかし、マウスの動きが随時カメラに反映されてかなり操作し辛いので勉強の意味も込めてマウスではないものの入力に切り替えてみようと思います

スライダーでカメラを制御

using UnityEngine;
using Unity.Cinemachine;
using System;
using UnityEngine.UI;
using Object = UnityEngine.Object;

//The component that you will add to your CinemachineCamera.
public class SliderInputController : InputAxisControllerBase<SliderInputController.SliderReader>
{
    void Update()
    {
        
        if (Application.isPlaying)
            UpdateControllers();
    }

    [Serializable]
    public class SliderReader : IInputAxisReader
    {
        
        public Slider m_Slider;

        public float GetValue(Object context, IInputAxisOwner.AxisDescriptor.Hints hint)
        {

            if (Input.GetMouseButtonUp(0))//追加
                m_Slider.value = 0;    //追加
            if (m_Slider is not null)
                return m_Slider.value;

            return 0;
        }
  
    }
}

こちらは公式にあったスクリプトに一部追加したものになります

スライダーを操作しない時は0に戻るようにしました

スライダーを2つ作成

スクリプトをCinemachineCameraにアタッチし、スライダーを図のようにアタッチします

実行

スライダーでカメラを制御できたので成功です!



まとめ

Cinemachine3でFPS風視点を作るには

Position Control→Position Composer

Rotation Control→Pan Tilt

カメラの初期位置を調整

お好みでCinemachine Input Axis Controllerを追加

これが正解かは分かりませんが参考になれば幸いです

タイトルとURLをコピーしました