読者です 読者をやめる 読者になる 読者になる

夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【Unity】カメラがオブジェクトを追うようにしてみた

Unity

引き続きボウリングプロジェクトです。
前回はカメラの視点が固定だったので肝心なピンが倒れる様子が遠くてよく見えませんでした。
もう少しアップで見られるようにカメラをボウリングの玉に合わせて移動させてみました。

動画です。

相変わらず物理演算の調整に手こずっています。
カメラアングルが改善されたのでボールが跳ね返ってきたり壁にハマったりすり抜けたり散々な状態なのがよくわかってしまいますね。

カメラオブジェクトのコンポーネントとして追加したスクリプトです。

using UnityEngine;
using System.Collections;

public class FollowBall : MonoBehaviour {
	
	public Ball ball;
	public float distance;
	public float height;
	public float limit;
	
	private Vector3 initialPosition;
	
	// Use this for initialization
	void Start () {
		
		initialPosition = new Vector3(ball.transform.position.x, ball.transform.position.y + height, ball.transform.position.z + distance);
		this.transform.position = initialPosition;
	}
	
	// Update is called once per frame
	void Update () {
		float z = ball.transform.position.z + distance;
		if (z > limit) {
			z = limit;
		}
		this.transform.position = new Vector3(initialPosition.x, initialPosition.y, z);
	}
}

ボールの初期位置に対し、distance分後ろ、height分上にカメラをセットしています。カメラのX座標とY座標は維持したままZ座標を毎フレームカメラに合わせて移動しています。
ただし、Z座標がlimitで指定した位置に達したらそれ以上は前に動かしません。
これにより、玉がピンに当って跳ね回るのに同調してカメラが動き回るのを防いでいます。