LoginSignup
0

More than 3 years have passed since last update.

Unity玉転がしチュートリアル 2-1.カメラの移動

Posted at

この記事の対象者

  • Unity入門したい人
  • 最初の一歩が踏み出せない人

OSとか環境とか

  • Windows 10 Pro
  • macOS Mojave
  • Unity 2019.2.8f1
  • Rider 2019.2.2

補足

  • 公式動画にて利用しているのはMacなので、Windowsユーザーはある程度脳内変換して見る事
  • 筆者はWindows、Macの両方の環境で確認。Ubuntuとかでは検証してない。
  • 基本Unityは英語メニューで利用
  • 間違いがあったらツッコミ大歓迎

公式

カメラの移動

現状のままだとカメラが固定なので、プレイヤーオブジェクトが非常に見づらい
→カメラとプレイヤーオブジェクトを紐付ければ万事解決じゃない?

下準備としてカメラの位置調整

PositionのYを10,Zを-10
RotationのXを45
に調整して、少し上から見下ろす形にする

image.png

Playerの子としてMainCameraを設定

image.png

この状態にすると、Playerオブジェクトが動かした場合(移動や回転)Main Cameraも一緒に移動する
※上記設定後「あー余裕だわー」とPlayして玉を動かすと高速なラートみたいな視点になるので落ち着きましょう

カメラとプレイヤーの関係性

あくまで「プレイヤーの子としてカメラが設定された」だけで、相対的な位置関係は変わっていない
なので
・親のSphereオブジェクトが動く
→回転して移動する
・子のMain Cameraオブジェクトが動く
→親のSphereオブジェクトに連動して同じく「回転」する

なので、Main CameraがSphereの子の状態だと視点がラートになる
カメラとプレイヤーはスクリプトで紐付ける必要がある

カメラへのスクリプトの追加

CameraControllerという名前でスクリプトを追加します
※カメラとスクリプトの紐付けは行っている事

追加するスクリプトは以下

CameraController.cs
using System.Collections;
using UnityEngine;

public class CameraController : MonoBehaviour
{
    public GameObject player;
    private Vector3 offset;

    void Start()
    {
        offset = transform.position - player.transform.position;
    }

    void LateUpdate()
    {
        transform.position = player.transform.position + offset;
    }
}

内容については単純なので割愛

ポイントとしては、毎フレーム処理する時にUpdateを使わずにLateUpdateを利用する事

ライフサイクルだとGame Logicに当たる箇所の

image.png

はじめに呼ばれるのがUpdate
最後に呼ばれるのがLateUpdate
となる

真・カメラとプレイヤーの紐付け

スクリプトを保存して、UnityエディタでCameraControllerのPlayer部分を見ると「None」となっているので紐付け

image.png

紐付ける方法は動画ではPlayerオブジェクトをドラッグしているが、フィールドの右にある小さい○をクリックして
出てくるダイアログで選択してもOK

これでPlayをすると、ボールの動きを追従するカメラの出来上がりとなる

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0