yotiky Tech Blog

とあるエンジニアの備忘録

Unity - スライダーでズームイン/ズームアウトする

対象のオブジェクトを中心に、スライダーの値でズームインしたりズームアウトするサンプルスクリプト。 スライダーの値に応じてカメラが移動する。

f:id:yotiky:20201121020630g:plain

public class Zoomer: MonoBehaviour
{
    public GameObject playerObject;
    public Slider zoomSlider;
    public float minDistance = 1;
    public float maxDistance = 5;

    private Camera mainCamera;

    void Start()
    {
        mainCamera = Camera.main;
        // カメラの位置を可動域に収めるため1度呼び出す
        Zoom();
    }

    public void Zoom()
    {
        // 最大距離から見ての目標距離
        var targetDistance = maxDistance - (maxDistance - minDistance) * zoomSlider.value;
        // playerObject からカメラへの向きと距離
        var headingPtoC = mainCamera.transform.position - playerObject.transform.position;
        // 方向に距離を掛けて目的の位置を計算
        mainCamera.transform.position = headingPtoC.normalized * targetDistance;
    }
}

画面の方は、uGUI で Screen Space - Overlay で右上からスライダーを追加してる。

f:id:yotiky:20201121012005p:plain

スライダーは、0~1 で定義し、可動域の中でどれだけの割合かを示すようにしている。

f:id:yotiky:20201121021249p:plain