Unity3D里摄像机Camera跟随角色移动

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);
        }
    }

留下评论

您的email地址不会被公开.

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据