Skocz do zawartości
Hawaxi

"Kopiowanie" obiektów w roomie

Rekomendowane odpowiedzi

Witam,

chciałbym skopiować wszystkie obiekty w roomie które są obiektami typu obj_wall.

 

Zrobiłem tak ale coś mi tutaj nie działa, wydawało mi się że to przechodzi przez wszystkie obiekty ale chyba jest inaczej

skoro nie działa:

 

with(obj_wall)

{

...

}

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

To co pokazałeś działa. Nie pokazałeś tego co nie działa, więc nie możemy Ci pomóc.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Okej, problem polega na tym że tworzy to kopie jednego obiektu obj_wall a nie wszystkich.

Mój kod:

 

obj_controller > mouse global right button

 

GML
with(obj_wall)

{

instance_create(obj_wall.x+64,obj_wall.y+64,obj_wall);

}

 

obj_controller > mouse global left button

 

GML
instance_create(floor(mouse_x/64)*64,floor(mouse_y/64)*64,obj_wall);

 

No i jeszcze obiekt obj_wall który nosi sprite o wielkości 64x64.

 

Prosze o pomoc!

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Twój problem nie jest w tym że tworzy się jeden obiekt. Tworzy się ich tyle ile chcesz. :) Problem jest taki że wszystkie tworzą się w jednej pozycji. Dobrze myślałeś ale zabrakło Ci trochę wiedzy.

 

Odnosisz się do obj_wall który jest obiektem, a nie instance. W room są rozstawione instance a nie obiekty. Adresowanie do obiektów jest w GM tolerowane i działą tak samo jak dla instance. Różnica robi się dopiero gdy jest tych instance kilka i mają różne wartości. Może wtedy GM odnosi się do pierwszej instance która mu wygodniej, nie wiem nigdy nie sprawdzałem.

 

Rozwiązanie twojego problemu będzie bardzo proste dzięki zasadzie działania with. Wewnątrz with kod wykonuje się jakby był wewnątrz tego obiektu więc możesz odnosić się bez problemu do zmiennych lokalnych.

Przez to też nie możesz się np odnosić do zmiennych lokalnych obiektu w którym kod jest wpisany, aby to zrobić trzeba używać other.

 

Rozwiązanie:

GML
with(obj_wall)

{

instance_create(x+64,y+64,obj_wall);

}

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dzieki stary, bardzo mi pomogłeś :lol: 3 dni nad tym siedziałem a rozwiazanie było tak proste.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×