Skocz do zawartości

Temat zbiorczy na drobnostki


Chell

Rekomendowane odpowiedzi

  • Filar Społeczności

Mam problemik taki. Mam dwa obiekty, wheat i wooden_floor. Obie mają maski w kształcie kwadratów 12x12 pikseli.

Oba mają w stepie

GML
depth=y*-1

Kiedy wheat jest rzucony na wooden_floor (oba mają taki sam x i y), wheat jest widoczny nad wooden_floor.

 

Teraz mam podnoszenie tych obiektów. Gracz ma zmienną pick_delay, która domyślnie jest false.

Kiedy któryś z obiektów jest kliknięty PPM, a pick_delay=false, wykonuje się skrypt podnoszenia (sprawdzanie czy taki obiekt jest już w ekwipunku i stackowanie go, lub szukanie dla niego wolnego miejsca). Na końcu tego skryptu pick_delay zmienia się na true na 15 stepów a po tym czasie z powrotem na false.

 

Teraz gdy klikam na wooden_floor na którym leży wheat, powinienem podnieść obie te rzeczy. Ponieważ jednak działa pick_delay podnoszę tylko jedną. Chciałbym żeby najpierw podnoszona była rzecz która jest wyżej czyli wheat. Jakimś jednak cudem pierwsza podnoszona jest podłoga, a dopiero za drugim kliknięciem wheat. Jak myślicie od czego to zależy?

Odnośnik do komentarza
Udostępnij na innych stronach

Pierwsze wykonuje się kod z wooden_floor, a potem jest zarysowywany wheat. To może w wheat daj depth=y*-1-1; ?

A wydaje mi sie, że podnosi ten obiekt niżej, bo właśnie w tej "kolejce wykonywania kodu" on jest wcześniej niż wheat.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Zmiana depthu w niczym nie pomaga niestety.

Mógłbym nawet dodać z dziesięć zmiennych żeby rozwiązać ten problem, ale nie mam pojęcia jak można by to zrobić

Odnośnik do komentarza
Udostępnij na innych stronach

Tak sobie teraz myślę, że zależność który jest u dołu, a u góry jest zależne od tego kolejności w której nadajesz ten sam depth. Ty chcesz podnieść pierwsze wheat, czyli depth musi być mniejszy, czyli musi sobie pierwszy nadać depth niż wooden_floor. Tak rozkminiam, ale w sumie nie wiem czy to na pewno tak działa.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak. Sutikku dobrze mówi. Obiekt z większym depth rysuje się pod spodem między innymi przez to że kod (w tym kod rysowania) wykonuje się przed obiektem z niższym depth.

 

Zrobienie czegoś takiego co chcesz zrobić wymaga trochę główkowania, a na to nie mam dziś sił. :P Być może musisz sobie stworzyć nową zmienną która będzie decydować który przedmiot leży wyżej?

Odnośnik do komentarza
Udostępnij na innych stronach

Wpadł mi taki pomysł. Zadziała on chyba tylko na dwa itemy w jednym miejscu chyba.

Item1 przy kolizji z item2, zapisuje sobie id itemu2. Gracz mając kolizje z itemem1, sprawdza czy on nie ma przypisanego jakiegoś id innego obiektu. Jeśli tak, to zbieramy ten przypisany do zmiennej, jak nie to wiadomo, normalnie zbieramy item1.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności
Wpadł mi taki pomysł. Zadziała on chyba tylko na dwa itemy w jednym miejscu chyba.

Item1 przy kolizji z item2, zapisuje sobie id itemu2. Gracz mając kolizje z itemem1, sprawdza czy on nie ma przypisanego jakiegoś id innego obiektu. Jeśli tak, to zbieramy ten przypisany do zmiennej, jak nie to wiadomo, normalnie zbieramy item1.

Brzmi sensownie, jutro pokombinuję w ten sposób.

Odnośnik do komentarza
Udostępnij na innych stronach

Mam surface o wielkości view_wview i view_hview i u mnie na pccie wszystko dobrze działa (rysuje na nim fejkowe światło, w sensie, że zapełniam na czarno i na bm_subtract rysuje koła o różnym alpha)

Ale jak testowałem na laptopie z zintegrowaną kartą Intel HD 4000, to była tak przy lewej części surface (nie na samym początku, a tak paredziesiąt pixeli od krawędzi), taka linia jakby w tym miejscu nie było surface. Takie samo coś, miał też kolega jak testował.

Odnośnik do komentarza
Udostępnij na innych stronach

Surface powinny mieć za wymiary potęgę 2. Na przykład 1024x512. Niektóre karty graficzne, ale telefony mają problemy gdy wymiary są złe.

 

It is highly recommended that all surfaces be created with a size that is a power of 2, ie: 16, 128, 512 or 1024 pixels in size, for example. This is not exactly necessary on certain platforms (like Windows and MacOS) but it will certainly increase compatibility on those targets, while for HTML5 and devices it is essential and very it's important that you remember this or you may run into problems later.
Odnośnik do komentarza
Udostępnij na innych stronach

O funkcjach trygonometrycznych? Jak to

GML
kat_w_stopniach = 34;

kat_w_radianach = kat_w_stopniach*pi/180;

 

tangens_kata = tan(kat_w_radianach);

 

Tylko wiesz nie można użyć niedozwolonych kątów dla tangensa jak np 90 stopni bo tangens z 0 stp nie istnieje. Tzn dąży do nieskończoności

Odnośnik do komentarza
Udostępnij na innych stronach

O ciekawostka jaką teraz odkryłem.

draw_point() nie skaluje się wraz ze skalowaniem viewa. Myślałem że jak przybliżę view tam gdzie postawiłem tą funkcją pixel to ujrzę wielki kwadrat ale nie, nadal jest pixelkiem na ekranie.

Musiałem użyć draw_rectangle(X,Y,X,Y) z taką samą 2 parą argumentów jak pierwszą. Żeby po przybliżeniu ujrzeć wielki pixel.

Odnośnik do komentarza
Udostępnij na innych stronach

Pytanie debilne ale chce mieć pewność.W dokumentacjii na temat Inn-App Purchases jest:

 

"GameMaker: Studio currently permits up to 128 purchases per title"

 

Rozumiem że chodzi o to że 1 osoba może w danej grze wykonać 128 zakupów, a nie o to że jeden tytuł umożliwia 128 zakupów w ogóle wszystkim (co byłoby paranoją)?

Odnośnik do komentarza
Udostępnij na innych stronach

Hmmm. To CHYBA można wykorzystać tak, że np. masz wybuch. I dajesz na nim timeline. I ten timeline ma, że po stepie 0 ustawia colid=1, w stepie 22 colid=2. A Ty przez colid, sprawdzasz jaką wybuch ma wielką kolizję ataku.

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