1.Unityのズームイン・ズームアウトについて
カメラワークで「ズーム」というのはよく使う手段だと思います。
その他のカメラワークも含めて、一度Unityで活用できるカメラワーク全般を学んでおくのは無駄ではありません。この辺について興味がある方は、詳しくは以下の記事をご覧ください
エクスプラボのtodoさんは「ズーム」というカメラワークについて、Cameraコンポーネントの「Field of View」の値を変更するか、物理カメラの焦点距離である「Focal Length」の値を変更するかの二つの実装方法を、書籍などでお話されています。個人的にはこの意見に賛成です。
2.マウスホイールでズーム
今回の話題である、マウスホイールでのズームカメラワークについて、関連するインターネットの記事を捜索すると、このような記事に出会いました。
こちらは、カメラやゲームオブジェクト自体を移動してズームを実装するという、初心者にはとてもわかりやすい方法が示されています。
以上、二つの記事を挙げましたが、上記の方法は2DのUnityで使用できないっぽいので、2D用のズームの実装スクリプトを作成することにしました。
3.【本題】マウスホイールでズーム【2D】
実際に数字を変更して、ズーム機能が実装できる余地があることを確認しましょう。
ただし、ここの数字を0にするとゲーム画面が真っ暗になってしまいます。
これには理由があるのですが、詳しくは自分でググってみてください~。
ということで、スクリプトです。
こちらのスクリプトの方針として、件の項目に0が入ることをとにかく回避するしています。
using UnityEngine;
public class CameraWork : MonoBehaviour
{
private Camera mainCam; //カメラ
void Start()
{
mainCam = Camera.main; //メインカメラを取得
}
void Update()
{
//ホイールを取得して、均しのためにtime.deltaTimeをかけておく
var scroll = Input.mouseScrollDelta.y*Time.deltaTime*10;
Debug.Log(scroll);
//mainCam.orthographicSizeは0だとエラー出るっぽいので回避策
if (mainCam.orthographicSize > 0)
{
mainCam.orthographicSize += scroll;
}
else
{
mainCam.orthographicSize -= scroll;
}
}
}
このスクリプトを適当なゲームオブジェクトにアタッチしていただければうまくいくかと…。