Как ограничить перемещение камеры в Unity?

Камера вращается вокруг персонажа, с помощью мышки.

public class CameraBehavior : MonoBehaviour {
    public GameObject CameraSphereCenter;

    public float speedCam;
    public float distanceOffset = 0.25f;
    public float defDistance = 4;
    public float distance;
    private float _x, _y;

    void LateUpdate() {
        _x = Input.GetAxis("Mouse X") * speedCam;
        _y = Input.GetAxis("Mouse Y") * -speedCam;
        transform.RotateAround(CameraSphereCenter.transform.position, transform.up, _x * Time.deltaTime);
        transform.RotateAround(CameraSphereCenter.transform.position, transform.right, _y * Time.deltaTime);
        transform.rotation = Quaternion.LookRotation(CameraSphereCenter.transform.position - transform.position);
        transform.eulerAngles = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, 0);
        RaycastHit hit;
        Vector3 trueTargetPosition = CameraSphereCenter.transform.position;
        Vector3 normalPositionVector = (transform.position - trueTargetPosition).normalized * defDistance;
        Vector3 normalPosition = trueTargetPosition + normalPositionVector;
        if (Physics.Linecast (trueTargetPosition, normalPosition, out hit)) {
            distance = Vector3.Distance (trueTargetPosition, hit.point);
            Vector3 position = CameraSphereCenter.transform.position - (transform.rotation * Vector3.forward * (distance - distanceOffset));
            transform.position = new Vector3(position.x, position.y, position.z);
        }else{
            distance = defDistance;
            transform.position = normalPosition;
        }
    }
}

Если переместить камеру над персонажем, то камеру начинает трясти. Как ограничить перемещение камеры чтобы она не могла переместится, над персонажем(или под)?.


Ответы (1 шт):

Автор решения: Tubix PvP

попробуйте это:


if(_x > "максимальное значение по Х") {
   _x = "максимальное значение по Х";
}
if(_y > "максимальное значение по Y") {
   _y = "максимальное значение по Y";
}

Этот код нужно поместить сразу после

_x = Input.GetAxis("Mouse X") * speedCam;

_y = Input.GetAxis("Mouse Y") * -speedCam;

→ Ссылка