2D游戏的相机(限制相机视野在地图内)

挂载MapBoxColider的物体Position 设置为0,0,0,总体没什么难度。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraController2D : MonoBehaviour
{
    public Transform followTarget;
    public float speed = 1;
    public Vector2 cameraoffset = Vector2.zero;
    public Collider2D mapRange;
    float halfHeight, halfWeight;
    float mapleft, mapright, maptop, mapbottom;
    Camera mainCam;
    private void Start()
    {
        mapleft = mapRange.bounds.min.x;
        mapright = mapRange.bounds.max.x;
        maptop = mapRange.bounds.max.y; 
        mapbottom = mapRange.bounds.min.y;
        mainCam = GetComponent<Camera>();
        halfHeight = mainCam.orthographicSize;
        halfWeight = mainCam.orthographicSize * mainCam.aspect;
    }
    private void LateUpdate()
    {
        Vector3 targetPos = new Vector3(followTarget.transform.position.x+cameraoffset.x, followTarget.transform.position.y+cameraoffset.y, transform.position.z);
        if (targetPos.x<mapleft+halfWeight)
        {
            targetPos.x = mapleft + halfWeight;
        }
        if (targetPos.x>mapright-halfWeight)
        {
            targetPos.x = mapright - halfWeight;
        }
        if (targetPos.y>maptop-halfHeight)
        {
            targetPos.y = maptop - halfHeight;
        }
        if (targetPos.y<mapbottom+halfHeight)
        {
            targetPos.y = mapbottom + halfHeight;
        }
        transform.position = Vector3.Lerp(transform.position, targetPos, Time.deltaTime*speed);
    }
}

 

posted @ 2021-04-02 23:04  wsfw  阅读(187)  评论(0编辑  收藏  举报