我正在制作一款游戏,并试图实现缩放功能,但缩放效果有些奇怪,我认为原因是摄像机无法超出房间的边缘,所以请问有谁能告诉我如何修复这个问题吗?

我的代码如下:

if keyboard_check(ord("-")) || keyboard_check(vk_subtract) {
    zoom += 0.25
}
if keyboard_check(ord("=")) || keyboard_check(vk_add) {
    zoom -= 0.25
}
zoom = clamp(zoom, 0.5, 1.5)

var _target_w = base_width * zoom
var _target_h = base_height * zoom
var _current_w = camera_get_view_width(view_camera[0])
var _current_h = camera_get_view_height(view_camera[0])
var _cam_x = camera_get_view_x(view_camera[0])
var _cam_y = camera_get_view_y(view_camera[0])
var _new_w = lerp(_current_w, _target_w, 0.1)
var _new_h = lerp(_current_h, _target_h, 0.1)
var _off_x = (_new_w - _current_w)/2
var _off_y = (_new_h - _current_h)/2

camera_set_view_size(view_camera[0], _new_w, _new_h)
camera_set_view_pos(view_camera[0], _cam_x - _off_x, _cam_y - _off_y)

请问该如何修复?