Unity3D里摄像机Camera跟随角色移动,主要有2个简单的途经,通过对位置的计算进行移动
有两种方式
1.直接将两者之间的Vector3相减
此方法的前提条件是2D,角色在Z轴的0,此方法优点是简单,缺点是不能控制速度,且必须角色在2D的z轴0位置上.
void Start()
{
camera = GetComponent<Camera>();
offset = transform.position - player.transform.position;
}
// Update is called once per frame
void Update()
{
camera.orthographicSize = (Screen.height / 100f) / 4f;
if (player)
{
transform.position = player.transform.position + offset;
}
}
2.用Vector3的Lerp,来计算移动距离
此方法的优点是可以控制移动的速度, 因为Lerp的第三个参数范围是0到1,如果是0在原地不动,如果是1就直接到目标位置, 中间的值就是移动到的一个范围,如果是0.5就只移动一半.这样在实际的运行的时候,摄像机的移动就有了一个由快到慢的逐渐减速的过程,但是此方法好像比较消耗计算,且理论上无限接近. 另外由于角色在z轴0处,摄像机不能移动z轴,所以最后z轴的数值要减去.摄像机的z轴初始值为-10
,所以最后加上new Vector3(0, 0, -10)
void Start()
{
camera = GetComponent<Camera>();
}
// Update is called once per frame
void Update()
{
camera.orthographicSize = (Screen.height / 100f) / 4f;
if (player)
{
transform.position = Vector3.Lerp(transform.position, player.transform.position, 0.1f) + new Vector3(0, 0, -10);
}
}