2016-06-02 2 views
0

В настоящее время я использую gamemaker для создания системы планшета. Я могу увеличить масштаб комнаты, перетащить и уменьшить масштаб, но как я могу ограничить, насколько я могу увеличивать и уменьшать масштаб? Размер комнаты - 1024 на 768 px. Я хочу, чтобы иметь возможность уменьшить масштаб до того, как он изначально выглядит, когда вы впервые войдете в комнату.Gamemaker Масштабирование и перетаскивание

Это мой код, который в настоящее время я поместил в скрипте:

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

ответ

0

Чтобы сделать это довольно просто, используя clamp function. Модифицированная версия кода будет выглядеть следующим образом:

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

Здравствуйте Duphus, Спасибо за ответ, я попытался с помощью строки коды предоставленной вами, но получил следующее сообщение об ошибке: неустранимой ошибке действия номера 1 шага Event0 для объекта управления: переменной obj_FCH. min_size (100010, -2147483648), не установленный перед его чтением. в gml_Script_drag_and_zoom (строка 27) - view_wview = зажим (view_wview * 0,15, min_size, 1024) стека кадра gml_Script_drag_and_zoom (строка 27) вызывается из - gml_Object_control_StepNormalEvent_1 (линия 3) - drag_and_zoom(); – Jivvy

+0

Где я объявляю min_size и что объявляю это, потому что это не функция создания игры. – Jivvy

+0

@ Jivvy Извините, я не имел в виду, что min_size будет переменной. Я имел в виду, что вы замените его тем, что вы хотите, чтобы минимальный размер был. Например, если вы хотите, чтобы минимальный размер составлял 44 для каждого из них, вы бы поставили это: view_wview = clamp (view_wview * 0.15, 44, 1024); Хотя я бы заменил 44 номером, который лучше вписывается в игру/приложение. – Duphus

0

просто использовать функцию clamp ограничить 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.

Смежные вопросы