游戏制作者缩放和拖动



我目前正在使用gamemaker创建一个平面图系统。我可以放大房间、拖动和缩小房间,但如何限制可以放大和缩小的程度?房间的大小为 1024 x 768 像素。我希望能够缩小到您第一次进入房间时的原始外观。

这是我目前已放置在脚本中的代码:

X=view_xview[0];
Y=view_yview[0];
if mouse_check_button(mb_left){
global.DRAG=true;
window_set_cursor(cr_drag);
view_xview-=vmx;
view_yview-=vmy;
}
/*else{
if !keyboard_check(vk_space){
    global.DRAG=false
}
window_set_cursor(cr_default);
}
*/
vmx=(mouse_x-X)-omx;
omx=(mouse_x-X);
vmy=(mouse_y-Y)-omy;
omy=(mouse_y-Y);
if mouse_wheel_up(){
center_of_space_x=view_xview+view_wview/2;
center_of_space_y=view_yview+view_hview/2;
view_wview-=view_wview*0.15;
view_hview-=view_hview*0.15;
view_xview=center_of_space_x-view_wview/2;
view_yview=center_of_space_y-view_hview/2;
}
if mouse_wheel_down(){
center_of_space_x=view_xview+view_wview/2;
center_of_space_y=view_yview+view_hview/2;
view_wview+=view_wview*0.15;
view_hview+=view_hview*0.15;
view_xview=center_of_space_x-view_wview/2;
view_yview=center_of_space_y-view_hview/2;
}

要做到这一点相当简单,使用 clamp function .代码的修改版本如下所示:

view_wview = clamp(view_wview * 0.15, min_size, 1024)
view_hview = clamp(view_hview * 0.15, min_size, 768)

只需使用钳位函数来限制view_wview和view_hview

var maxZoomIn = 0.2; //500% zoom in limit
var maxZoomOut = 1; //100% zoom out limit
if mouse_wheel_up(){
    center_of_space_x=view_xview+view_wview/2;
    center_of_space_y=view_yview+view_hview/2;
    view_wview = clamp(view_wview - view_wview * 0.15, maxZoomIn*room_width, maxZoomOut*room_width)
    view_hview = clamp(view_hview - view_hview * 0.15, maxZoomIn*room_height, maxZoomOut*room_height)
    view_xview=center_of_space_x-view_wview/2;
    view_yview=center_of_space_y-view_hview/2;
}

和类似的mouse_wheel_down。

最新更新