Unityでキャラクターを追いかけるカメラを作る。 一定距離での追従

 

{{DZ_TITLE}}
Unityで固定カメラ以外の場合、キャラクターなどに何らかの追従をさせる必要があります。
そこで、一定距離から俯瞰してキャラクターを撮影するUnityのマクロを作りました。

仕様

  • 視点はGuiで決めたい。
    Unityで配置した通りの距離を維持し続ける。
  • キャラクターの向きと関係なく、一定方向から確認し続ける

結果

凄く分かりずらい、サンプルかもしれませんが、線の上を走っている矢印を真上から撮影しているサンプルです。
でも、滑らかに動いているのが判るかと思います。

2020-09-29-001-002.gif

使い方

  1. カメラとキャラクターを配置してください。
    通常、カメラは最初から配置されていると思うので、それを使う感じでOKです。

  この配置 通りのまま、キャラクターを追いかけるので、位置決めは重要です。

  1. AssetにC#のScriptを登録してください。
    今回は「CameraSameXZ」という名前にしました。
    Assetの画面で「Create」→ 「C# Script」で実施できます。

  2. CemeraSameXZのスクリプトを編集してください。

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

public class CameraSameXZ : MonoBehaviour
{
    public GameObject targetCharacter_;
    private Vector3 offset_;

    // Start is called before the first frame update
    void Start()
    {
        offset_ = targetCharacter_.transform.position - this.transform.position;
    }

    // Update is called once per frame
    void Update()
    {
        this.transform.position = targetCharacter_.transform.position - offset_;
    }
}
  1. カメラを選択した状態で、InspectorからC# Script「CameraSameXZ」を登録します。
    「Add Component」 → 「C# Script」 → 「CameraSameXZ」で登録できます。

  2. 「CameraSameXZ」の「Target Character_」にカメラで追いかけたい対象のキャラクタを登録します。
    シーンからDrag & Dropで登録完了。

  3. 最終的にこんな感じになります。
    Inspector

少しだけ技術的な話

this.transform.position まわりはものすごく単純な内容なので、良いと思います。

このようなScript組む際に重要になるのが、 void Update() ではなく void LateUpdate() を使う事です。
画面の更新頻度の問題ですが、 void Update() を使うと画面ががくがく動いて見れたもんじゃありません。
void LateUpdate() を使う事で滑らかなスクロールを実現しています。

おすすめ記事

Netlify、リダイレクト設定、Webserverレイアウト変更
Netlify、リダイレクト設定、Webserverレイアウト変更
OpenCV - Python徹底解説
OpenCV - Python徹底解説
Django テンプレート 使用 #1
Django テンプレート 使用 #1
気象庁 台風位置表 をpython foliumで可視化する
気象庁 台風位置表 をpython foliumで可視化する
Django エラー 『NoReverseMatch at … ‘…’ is not a registered namespace』 対策
Django エラー 『NoReverseMatch at … ‘…’ is not a registered namespace』 対策
プログラムは独学が良いか、スクールが良いか?【無償カウンセリング、無料体験あり】
プログラムは独学が良いか、スクールが良いか?【無償カウンセリング、無料体験あり】
Supponsered

このエントリーをはてなブックマークに追加

Comments

comments powered by Disqus