Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

Można zostawić czas żeby cały czas go dodawało, a potem dzielić bez reszty, ale chyba zmienna w końcu straci miejsce ;d

  • Filar Społeczności
Opublikowano

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?

Opublikowano

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.

  • Filar Społeczności
Opublikowano

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ć

Opublikowano

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.

Opublikowano

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?

Opublikowano

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.

  • Filar Społeczności
Opublikowano
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.

Opublikowano

Hmm a może coś takiego, zrób ds listę piorytetową, ustawisz podłodze mniejszy priorytet. Gdy zaczniesz podnosić lista się posegreguje a ty podniesiesz ten z większym priorytetem.

Opublikowano

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

Opublikowano

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

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

Opublikowano

No ale GM używa radianów akurat do tych funkcji to trzeba przekształcić.

Ja zapisuję sobie konwersję do stałych

GML
d2r = pi/180;

r2d = 180/pi;

i wtedy mnożę przez tą stałą.

Opublikowano

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.

Opublikowano

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ą)?

Opublikowano

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.

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