対象のオブジェクトを中心に、スライダーの値でズームインしたりズームアウトするサンプルスクリプト。 スライダーの値に応じてカメラが移動する。
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 で右上からスライダーを追加してる。
スライダーは、0~1 で定義し、可動域の中でどれだけの割合かを示すようにしている。