Skocz do zawartości

gnysek

Administratorzy
  • Postów

    9 826
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    144

Treść opublikowana przez gnysek

  1. Jeśli chodzi o to co podałem, to tam czasem może być błąd, że któraś z funkcji zwraca -1 i distance_to_object() się źle wylicza wtedy. Nie mniej mi się na taką sytuację trafić nie udało, co nie znaczy, że ona nie może zaistnieć, bo jak widać w kodzie, nie jest to sprawdzane.
  2. GML var c1,c2; c1 = collision_line(x,y,xprevious,yprevious,obj_npc,false,true); c2 = collision_line(x,y,xprevious,yprevious,obj_wall,false,true); if c1 || c2 { x = xprevious; y = yprevious; move_contact_all(direction,speed); if distance_to_object(c1) < distance_to_object(c2) { event_perform(ev_collision,obj_npc); } else { event_perform(ev_collision,obj_wall); } } Teraz jest OK? BTw. zamiast pisać: GML instance_create(other.x,other.y,obj_blood); instance_create(other.x,other.y,obj_blood); instance_create(other.x,other.y,obj_blood); instance_create(other.x,other.y,obj_blood); instance_create(other.x,other.y,obj_blood); instance_create(other.x,other.y,obj_blood); instance_create(other.x,other.y,obj_blood); instance_create(other.x,other.y,obj_blood); instance_create(other.x,other.y,obj_blood); Możesz napisać: GML repeat(10) instance_create(other.x,other.y,obj_blood);
  3. Można przecież sprawdzić, czy jest kolizja ze ścianą dokładnie tą samą funkcją... Btw. to też może się przydać: https://gmclan.org/index.php?czytajart=74
  4. Jak obiekt jest deaktywowany, to go w ogóle nie ma - nie wiesz ile jest takich obiektów, nie sprawdzisz, czy istnieją.
  5. Pytanie, gdzie ten kod wstawiłeś i co masz w draw... bo jedno od drugiego jest zależne, to nie jest tak, ze kod w jednym miejscu sprawia, że ten w innym nie działa @up ' i " to jest to samo w GML, to nie PHP gdzie w " się doszukuje wyrażeń
  6. Rodzic. Trochę jak grupowanie - znaczy się masz obiekty: objTata objSyn objCorka i w dwóch ostatnich jako Parent ustawisz objTata, no to jak napiszesz instance_count(objTata) - zwróci Ci 3 - bo objSyn i objCorka dziedziczą po tacie (więc mozna się do nich dostać po jego nazwie). Dziedziczą też kod w eventach, jeśli w obiekcie - dziecku, ten kod nie zostanie niczym nadpisany (obojętnym klockiem) - aczkolwiek event_inherited() wywołuje zdarzenia z ojca w takim przypadku. Dzieci są więc jakby kilkoma obiektami na raz.
  7. Nie. Dezaktywujesz wszystkie obiekty danego typu (wystarczy dać wspólnego rodzica), a aktywujesz tylko obszar. Działa całkiem znośnie.
  8. Można wykonywać kod tylko w tym roomie w którym się jest. Ale... możesz ustawić sobie jakaś zmienną globalną i jak przechodzisz do tego roomu, to jeśli ona ma wartosć taką a taką, to wykonywany jest kod.
  9. Nie, raczej chodzi o to, żeby dezaktywować instancje, zeby gra nie przycinała jak jest na ekranie 10 obiektów, a w roomie 10000. Takie coś mam w Almorze gdzie room ma 60000px szerokości.
  10. Tilesety do tego nie służą. Tilesety są do tego, żeby układać niektóre grafiki tła które nie muszą być obiektami w celu pominięcia sprawdzania dla nich eventów (step, kolizja, alarmy, draw).
  11. Na vertexach to by to w GM w sumie zrobił ;)
  12. Może być. Ale, mi się niektóre gry GMowe tną na 1GB Radeonie 5650... na którym np. Wiedźmin 2 leci w pełnym HD.
  13. Uczą na matematyce od podstawianiu liczb za zmienną?
  14. Ale jak najbardziej istnieje. Przykładowe gry: http://yoyogames.com/game_showcases W domowych warunkach opcja ta będzie dostępna na wiosnę.
  15. Crysis jest napisany w ASM/C++, GameMaker nie. GML jest tylko interpretowanym językiem odpalającym funkcje DirectDraw3D (i nie korzysta z wielu funkcjonalnosci dzisiejszych kart graficznych) - działa to trochę jak JavaScript w starszych przeglądarkach - do tego stopnia, że gry w GameMakerze HTML5 pod google chrome w niektórych przypadkach są szybsze, niż wersje windowsowe. Tak to wygląda, że gra GMowa ma wymagania z 10x większe niż ta sama gra w czystym C++
  16. W takim razie musisz mieć gdzieś drugi raz tworzenie obiektów :) Sprawdź dokładnie (w GM8.1 jest opcja przeszukiwania kodu również w obiektach - Ctrl+Alt+F bodaj).
  17. od środka grafiki do lufy. środka okręgu inaczej.
  18. Znajdź środek sprite'a, policz ile jest pikseli w prawo, ile w górę do lufy, i otrzymasz promień oraz kąt (dla x i y powinny być takie same, inaczej nabój będzie zależnie od obrotu dalej lub bliżej się tworzył)
  19. Proszę, teraz działa z tablicami, ds_list i ds_map :) https://gmclan.org/up23_3_foreach.html Zaznaczam jednak, że to wciąż bardziej ciekawostka bo te same zadania tradycyjną metodą są dużo szybsze.
  20. switch(hotbar.idObj[ argument0 ]) a potem: draw_sprite ( spr_sprite(i), ...
  21. Nigdzie nie napisałem, że dla tablic jest to szybsze. variable_local_array_get zjada większość tego czasu :) W przypadku stuktur danych (ds_) będzie to już praktycznie żadna różnica, ale za to jaka wygoda :) Będę miał dostęp do pełnego GM, dopiszę brakującą resztę i pogadamy :)
  22. Nie, to raczej doświadczenie. Zaskoczenie przeciwnika to najlepszy element obrony :) Mam kilku nauczycieli którzy mnie przepraszali po latach za swoje zachowanie :P
  23. Z racji, że w GM nie ma tablic asocjacyjnych, to na normalnych tablicach tylko nieznacznie skraca zapis, ale w przypadku ds_list i ds_map - zaoszczędza sporo kodu - ofc tą funkcjonalność trzeba sobie dopisać, ale to zrobię dziś w domu i wrzucę na stronę jako przykład :) http://4programmers.net/C_sharp/Foreach http://php.net/manual/en/control-structures.foreach.php
×
×
  • Dodaj nową pozycję...