みなためラボ

【Unity2D】カメラ移動とズームのスクリプトを簡単に作る方法

文字サイズ

はじめに

どうも! 高杉 皆為(@MinatameT)です。

この記事では、次のことが全部できるスクリプトの作り方を説明しています。

このスクリプトでできること
  • カメラの上下左右移動
  • カメラのズームイン(拡大)とズームアウト(縮小)

これらの機能は、すべてキーボード入力で利用できるものとします。

それではさっそく、作り方を説明していきます。

動作環境

  • Windows 7
  • Unity 2019

カメラ移動とズームのスクリプト

スクリプト名は「CameraZoom」とします。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraZoom : MonoBehaviour
{
  Transform tf; //Main CameraのTransform
  Camera cam; //Main CameraのCamera
  
  void Start()
  {
    tf = this.gameObject.GetComponent<Transform>(); //Main CameraのTransformを取得する。
    cam = this.gameObject.GetComponent<Camera>(); //Main CameraのCameraを取得する。
  }

  void Update()
  {
    if(Input.GetKey(KeyCode.I)) //Iキーが押されていれば
    {
      cam.orthographicSize = cam.orthographicSize - 1.0f; //ズームイン。
    }
    else if(Input.GetKey(KeyCode.O)) //Oキーが押されていれば
    {
      cam.orthographicSize = cam.orthographicSize + 1.0f; //ズームアウト。
    }
    if(Input.GetKey(KeyCode.UpArrow)) //上キーが押されていれば
    {
      tf.position = tf.position + new Vector3(0.0f,1.0f,0.0f); //カメラを上へ移動。
    }
    else if(Input.GetKey(KeyCode.DownArrow)) //下キーが押されていれば
    {
      tf.position = tf.position + new Vector3(0.0f,-1.0f,0.0f); //カメラを下へ移動。
    }
    if(Input.GetKey(KeyCode.LeftArrow)) //左キーが押されていれば
    {
      tf.position = tf.position + new Vector3(-1.0f,0.0f,0.0f); //カメラを左へ移動。
    }
    else if(Input.GetKey(KeyCode.RightArrow)) //右キーが押されていれば
    {
      tf.position = tf.position + new Vector3(1.0f,0.0f,0.0f); //カメラを右へ移動。
    }
  }
}

このスクリプトを、Main Cameraにアタッチ(ドラッグ&ドロップで装着)してください。

そうすれば、カメラの移動機能とズーム機能が使えるようになります。

カメラの操作方法は、次の表のとおりです。

キー機能
Iズームイン
Oズームアウト
上矢印上移動
下矢印下移動
左矢印左移動
右矢印右移動

ズームインやズームアウトの強さを変更したい場合は、次の部分の「1.0f」の部分を変更してみてください。

    if(Input.GetKey(KeyCode.I)) //Iキーが押されていれば
    {
      cam.orthographicSize = cam.orthographicSize - 1.0f; //ズームイン。
    }
    else if(Input.GetKey(KeyCode.O)) //Oキーが押されていれば
    {
      cam.orthographicSize = cam.orthographicSize + 1.0f; //ズームアウト。
    }

また、カメラ移動の強さを変更したい場合は、次のVector3の部分の「1.0f」または「-1.0f」の部分を変更してみてください。

    if(Input.GetKey(KeyCode.UpArrow)) //上キーが押されていれば
    {
      tf.position = tf.position + new Vector3(0.0f,1.0f,0.0f); //カメラを上へ移動。
    }
    else if(Input.GetKey(KeyCode.DownArrow)) //下キーが押されていれば
    {
      tf.position = tf.position + new Vector3(0.0f,-1.0f,0.0f); //カメラを下へ移動。
    }
    if(Input.GetKey(KeyCode.LeftArrow)) //左キーが押されていれば
    {
      tf.position = tf.position + new Vector3(-1.0f,0.0f,0.0f); //カメラを左へ移動。
    }
    else if(Input.GetKey(KeyCode.RightArrow)) //右キーが押されていれば
    {
      tf.position = tf.position + new Vector3(1.0f,0.0f,0.0f); //カメラを右へ移動。
    }

最後に、このスクリプトを使ったときの動画を掲載しておきます。ぜひ、ご覧ください。

カメラ移動とズームのスクリプトを使ってみた動画

シーンには、私のキャラクターの顔画像だけを置いています。

この記事が読者さんたちの参考になれば幸いです。


 

みなためじゃんけん

このコーナーは、私と擬似的にじゃんけんできるコーナーです。

みなためじゃんけん、じゃんけんぽん!

私が出したのは……





パー

パーでした! チョキの勝利です!



この記事をSNSでシェアする

プログラミングカテゴリーの最新記事(5件)

最新記事(10件)

管理人のTwitter

内部リンク集