Skocz do zawartości

Game Maker Studio 2 dezaktywowanie obiektów


H2S04

Rekomendowane odpowiedzi

Witam. Kupiłem GMS2 i jest tam nowy system kamery... Nie ma już viewów, tzn są ale nie ma już funkcji view_xview,yview,wview,hwiev... I teraz moje pytanie... Jak teraz zaprogramować dezaktywację regionalną? Muszę to zrobić, bo mam mapę całą w obiektach (Podziemia, które można kopać). Mam już upatrzony w necie system kamery, dzięki której mogę przybliżać i oddalać kamerę, i teraz potrzeba mi dezaktywować obiekty, które są poza kamerą... Mam mapę 9984x9984 pełną czarnych kratek 64x64, jest ich od cholery przez co nie jestem w stanie uruchomić gry...

 

 

Objekt "o_Cam"

Create:

GML
/// @description Insert description here

// You can write your code in this editor

camspeed = 30;

//Build a camera at (0,0), with size 640x480, 0 degrees of angle, no target instance, instant-jupming hspeed and vspeed, with a 32 pixel border

camera = camera_create_view(4992, 4992, 1920, 1080, 0, self, 30, 30, 1920, 1080);

view_set_camera(0, camera);

zoom_level = 1;

//Get the starting view size to be used for interpolation later

default_zoom_width = camera_get_view_width(view_camera[0]);

default_zoom_height = camera_get_view_height(view_camera[0]);

global.buildqueue = 0;

 

depth = -100;

 

Step:

GML
/// @description Insert description here

// You can write your code in this editor

if keyboard_check(vk_escape){

game_end();

}

 

 

 

 

if keyboard_check(ord("W")){

y -= camspeed;

}

if keyboard_check(ord("S")){

y += camspeed

}

if keyboard_check(ord("A")){

x -= camspeed;

}

if keyboard_check(ord("D")){

x += camspeed;

}

 

if keyboard_check_pressed(ord("R")){

person = instance_create_layer(mouse_x,mouse_y,"Instances",o_Person);

person.sex = choose("Man","Woman");

person.FatherNational = choose("Russian","English","Polish");

person.MotherNational = choose("Russian","English","Polish","German");

}

 

//Move the zoom level based on mouse scrolling. Clamp the value so stuff doesn't get too silly.

zoom_level = clamp(zoom_level + (((mouse_wheel_down() - mouse_wheel_up())) * 0.1), 0.1, 5);

 

//Get current size

var view_w = camera_get_view_width(view_camera[0]);

var view_h = camera_get_view_height(view_camera[0]);

 

//Set the rate of interpolation

var rate = 0.2;

 

//Get new sizes by interpolating current and target zoomed size

var new_w = lerp(view_w, zoom_level * default_zoom_width, rate);

var new_h = lerp(view_h, zoom_level * default_zoom_height, rate);

 

//Apply the new size

camera_set_view_size(view_camera[0], new_w, new_h);

 

//Get the shift necessary to re-align the view.

var shift_x = camera_get_view_x(view_camera[0]) - (new_w - view_w) * 0.5;

var shift_y = camera_get_view_y(view_camera[0]) - (new_h - view_h) * 0.5;

 

//Update the view position

camera_set_view_pos(view_camera[0],shift_x, shift_y);

 

camera_set_view_pos(camera,

clamp( camera_get_view_x(camera), 0, room_width - camera_get_view_width(camera) ),

clamp( camera_get_view_y(camera), 0, room_height - camera_get_view_height(camera) ));

 

var xx, yy;

 

if mouse_check_button(mb_middle){

xx = mouse_x;

yy = mouse_y;

 

x = xx;

y = yy;

}

 

 

instance_deactivate_region(view_xport[0] - 128, view_yport - 128, view_wport[0] + 256, view_hport[0] + 256 , false,true);

instance_activate_region(view_xport[0] - 64, view_yport - 64, view_wport[0] + 128, view_hport[0] + 128, false);

 

Room Start:

GML
/// @description Insert description here

// You can write your code in this editor

//Enable the use of views

view_enabled = true;

 

//Make view 0 visible

view_set_visible(0, true);

 

//Set the port bounds of view 0 to 640x480

view_set_wport(0, 1920);

view_set_hport(0, 1080);

 

window_set_rectangle((display_get_width() - view_wport[0]) * 0.5, (display_get_height() - view_hport[0]) * 0.5, view_wport[0], view_hport[0]);

surface_resize(application_surface,view_wport[0],view_hport[0]);

 

window_set_fullscreen(true);

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...