【Unity】カメラでキャラクターを追従する方法とは?キホンを解説

ゲームを作っているとプレイヤーをカメラで追従したくなる場合があるかと思います。

この記事では、


・カメラの基本

といった初歩的なことから、


・子に配置する方法
・スクリプトで制御する方法

といった少し応用的なことまでわかりやすく解説します!

カメラの基本

unityではカメラが映しているものがプレイ画面となります。

ですので、カメラをうまく扱えればより多くの見せ方ができるようになるのです!

カメラをスクリプトで操作できるようになるとできることが一気に増えますね。

詳しいことは下記の記事に書いてありますので、ぜひ読んでみてください。

【Unity入門】カメラの基礎を学ぼう!あんな挙動も意外と簡単!?
更新日 : 2018年12月24日

目的別の追従のさせ方!

プレイヤーをカメラで追従させる方法は大きく分けて二つあります。

一つ目はプレイヤーの子にカメラを配置する方法です。

この方法だと楽に実装することができます。

二つ目はスクリプトを使った方法です。

この方法だと少し面倒ですが、自由度が高くなります。

子に配置する方法

プレイヤーをカメラで追従するためには、まずプレイヤーを動かせるようにしておかなければなりません。

コードを書いてプレイヤーを動かせるようにしましょう。

適当なオブジェクトとスクリプトを作って、スクリプトをオブジェクトにアタッチしてください。

コード内容は、

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

public class Test : MonoBehaviour
{
   void Update () {
        if (Input.GetKeyDown (KeyCode.UpArrow)) 
        {
            transform.Translate (0, 0, 1);
        }else if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            transform.Translate(1, 0, 0);
        }else if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            transform.Translate(0, 0, -1);
        }else if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            transform.Translate(-1, 0, 0);
        }
    }

}

上記のコードは、矢印キーを押した時にオブジェクトの位置を変えるといった簡単なものです。

実行して挙動を確認してみましょう。

プレイヤーが動くようになりましたね!

プレイヤーは動きますが、カメラが追従していません。

それでは、追従させていきましょう。

動きをわかりやすくするために他のオブジェクトを設置しておきます。

プレイヤーをカメラで追従させるためにカメラオブジェクトをプレイヤーの子階層におきましょう。

これだけでカメラがプレイヤーを追従するようになります。

実行して確かめてみましょう!

カメラがプレイヤーを追従していますね!

このようにプレイヤーの子階層にカメラオブジェクトを配置することでプレイヤーを追従するようになります。

スクリプトで制御する方法

子階層にカメラを入れていた場合は出しましょう。

先ほどのスクリプトを書き換えていきます。

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

public class Test : MonoBehaviour
{
    //カメラオブジェクト
    public GameObject mainCamera;

    //z軸を調整。正の数ならプレイヤーの前に、負の数ならプレイヤーの後ろに配置する
    public int zAdjust = 5;

    void Update () {
        //カメラはプレイヤーと同じ位置にする
        mainCamera.transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + zAdjust);

        if (Input.GetKeyDown (KeyCode.UpArrow)) 
        {
            transform.Translate (0, 0, 1);
        }else if (Input.GetKeyDown(KeyCode.RightArrow))
        {
            transform.Translate(1, 0, 0);
        }else if (Input.GetKeyDown(KeyCode.DownArrow))
        {
            transform.Translate(0, 0, -1);
        }else if (Input.GetKeyDown(KeyCode.LeftArrow))
        {
            transform.Translate(-1, 0, 0);
        }
    }

}

このコードは先ほどのコードに少し付け足しただけです。

zAdjustの値を変えるとカメラを置く位置が変わります。

カメラを設定する必要があるので、inspectorから設定しましょう。

それでは実行してみましょう。

カメラがプレイヤーに追従していますね。

このようにスクリプトを使って追従させることもできます。

まとめ

いかがでしたか?

今回はプレイヤーをカメラが追従する方法について扱ってきました。

追従ができるようになるとゲーム作りの幅が広がるので、この記事を参考に使ってみてください。

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

sato

sato

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説