2つのオブジェクトの中間地点にカメラの視点を合わせ、全体を表示させてみます。
Cube(プレーヤー)を動かします。
Sphereとの間にカメラを向け、2つのオブジェクトの全体を写しながら、近づいたり離れたりします。
ゲームビューの見えかたはこのようになります。
関連記事:
2点間の中心を取得して移動する
ぶつかればカメラをズームアップ
Cube(プレーヤー)の移動
Cube、空のオブジェクト、Sphereを新規作成します。
GameObject(空のオブジェクト)を中央に配置します。
まずはCubeを動かせるようにしましょう。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { void Update() { float dx = Input.GetAxis("Horizontal") * Time.deltaTime * 3; float dz = Input.GetAxis("Vertical") * Time.deltaTime * 3; transform.position = new Vector3 ( transform.position.x + dx, 0, transform.position.z + dz ); } } |
十字キー操作で、Cubeを動かすことができるようになります。
2つのオブジェクトの中間地点
HalfPoint.csを作成して、GameObjectに追加します。
HalfPoint.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class HalfPoint : MonoBehaviour { public GameObject cube; public GameObject sphere; public float dis; void Update(){ this.transform.position = (cube.transform.position + sphere.transform.position) / 2; Vector3 cubePos = cube.transform.position; Vector3 spherePos = sphere.transform.position; dis = Vector3.Distance(cubePos, spherePos); } } |
キューブとスフィアのフィールドが出来ているので、ここにCubeとSphereを入れます。
プレイして、Cubeを動かしてみましょう。
GameObject(空のオブジェクト)が、常に2点間の中心点として動いていきます。
中間地点にカメラを向けて全体を表示
CameraMove.csを作成して、MainCameraに追加します。
CameraMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CameraMove : MonoBehaviour { public GameObject target; HalfPoint targetPos; void Start() { target = GameObject.Find ("GameObject"); targetPos = target.GetComponent<HalfPoint>(); } void Update() { transform.LookAt(target.transform); this.transform.position = new Vector3 (0,0,-targetPos.dis); } } |
プレイして、Cubeを動かしてみましょう。
transform.LookAtにより、中間点に向かってカメラを合わせています。
また、HalfPosition.csの中にあるdisを取得。
disの値と、カメラのZ座標を連動させて、できる限り2つのオブジェクトが映るように撮影しています。