はじめに
メインカメラをオブジェクトの子オブジェクトに追加すれば、追従自体は簡単に実現できる。
ただし、オブジェクトが回転するとカメラも回転してしまう。これでは画面酔い待ったなしである。
内容
結論としては、カメラオブジェクトは子要素として指定せず、スクリプトにて追従を行う。
カメラにアタッチするスクリプト
public class CameraMoveController : MonoBehaviour
{
// キャラクターオブジェクト
public GameObject playerObj;
// カメラとの距離
private Vector3 offset;
void Start()
{
playerObj = GameObject.FindGameObjectWithTag(Groval.TAG_PLAYER);
offset = transform.position - playerObj.transform.position;
}
void LateUpdate()
{
transform.position = playerObj.transform.position + offset;
}
}
詳細
初めに、カメラとターゲットとなるオブジェクトの距離をoffset
として取得する。
LateUpdate()
にて、ターゲットに対して常に一定の距離を保ったまま追従する。
これで画面酔いすることはない。