2016-06-02 1 views
0

私は現在、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; 
} 

答えて

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は、 は、私はあなたが提供されているコードの行を使用してみましたが、次のエラーを受け取っ、返信いただきありがとうございます。読み取り前に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

単にview_wviewを制限し、mouse_wheel_downため

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

と同様のをview_hviewするclamp関数を使用します。 変数obj_FCH: アクション番号オブジェクト制御のためのステップEVENT0 の1 で FATAL ERROR:

関連する問題