この記事の対象者
- 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
に調整して、少し上から見下ろす形にする
Playerの子としてMainCameraを設定
この状態にすると、Playerオブジェクトが動かした場合(移動や回転)Main Cameraも一緒に移動する
※上記設定後「あー余裕だわー」とPlayして玉を動かすと高速なラートみたいな視点になるので落ち着きましょう
カメラとプレイヤーの関係性
あくまで「プレイヤーの子としてカメラが設定された」だけで、相対的な位置関係は変わっていない
なので
・親のSphereオブジェクトが動く
→回転して移動する
・子のMain Cameraオブジェクトが動く
→親のSphereオブジェクトに**連動して同じく「回転」**する
なので、Main CameraがSphereの子の状態だと視点がラートになる
カメラとプレイヤーはスクリプトで紐付ける必要がある
カメラへのスクリプトの追加
CameraControllerという名前でスクリプトを追加します
※カメラとスクリプトの紐付けは行っている事
追加するスクリプトは以下
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に当たる箇所の
はじめに呼ばれるのがUpdate
最後に呼ばれるのがLateUpdate
となる
真・カメラとプレイヤーの紐付け
スクリプトを保存して、UnityエディタでCameraControllerのPlayer部分を見ると「None」となっているので紐付け
紐付ける方法は動画ではPlayerオブジェクトをドラッグしているが、フィールドの右にある小さい○をクリックして
出てくるダイアログで選択してもOK
これでPlayをすると、ボールの動きを追従するカメラの出来上がりとなる