Skocz do zawartości

Amaterasu

Użytkownicy
  • Postów

    390
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez Amaterasu

  1. Wystarczy wywołać powyższy kod w danym obiekcie, pamiętając jednocześnie, aby stworzyć zmienną "zmienna" w evencie Create (i np. przypisać jej wartość "") w tym obiekcie.
  2. Potrzebujesz zmiennej 256-bitowej, jeżeli chcesz sprawdzić wszystkie znaki ASCII. GM obsługuje tylko do 64 bitów. Możesz natomiast zrobić tablicę z 256 elementami i ustawiać wartość danej komórki na 1, jeśli naciśnięto klawisz i 0, gdy go puszczono, potem wystarczy sprawdzić wartość potrzebnej komórki. Jeżeli nie są potrzebne wszystkie znaki ASCII, to możesz zrobić sobie ds_map, który przekieruje dany indeks tablicy na właściwy znak ASCII.
  3. Nie znam się na wydajności poszczególnych shaderów. Nie pomoże rozwiązywanie równań liniowych zamiast liczenia kąta dla każdego piksela?
  4. A nie można kompletnie ignorować teksturowania trójkątów i działać na samych pikselach? Chyba można jakoś zaimplementować, żeby dany piksel rysował się albo nie, zależnie od danego kąta.
  5. Możesz odrzucić całkowicie fizykę Box2D i napisać własną. Box2D nie uznaje kompromisów i wszystko musi zachowywać się zgodnie z zasadami dynamiki Newtona. Nie ma czegoś takiego jak "całkowite zatrzymanie obiektu w jednym momencie", chyba że to sobie dokładnie wyliczysz. Możesz też bawić się z siłami i impulsami czy też ograniczeniami (constraints), jeżeli chcesz koniecznie zostać przy Box2D, za wiele ci tu nie pomogę.
  6. Potrzebujesz dwóch funkcji. GML //ta funkcja zwróci ci procent obrażeń otrzymywanych przez pancerz switch argument0 { /*PRZYKŁAD case "zielony pancerz": return 0.5 //liczba po return musi należeć do przedziału <0; 1> case "czerwony pancerz": return 0.9 case 2: return 0.2 */ } GML //ta funkcja zada obrażenia bohaterowi var sh1,hp1,dmg_sh,dmg_hp,ratio; ratio = FunkcjaPowyżej(argument) //w zależności od tego, jaki typ pancerza ma postać, otrzyma on różne obrażenia sh1 = aktualny_pancerz //pamiętaj, aby zmienić nazwy zmiennych, np. u ciebie "aktualny_pancerz" będzie "shd" hp1 = aktualne_hp dmg_hp = argument0*(1-ratio) dmg_sh = argument0*ratio if(sh1 < dmg_sh) { aktualny_pancerz = 0 dmg_hp += (dmg_sh-sh1) dmg_sh = 0 } aktualny_pancerz -= dmg_sh aktualne_hp -= dmg_hp if(aktualne_hp <= 0) { //kod umierania } Tę funkcję nazwij np. ZadajObrażenia(argument), argumentem jest ilość zadanych obrażeń, użyj tej funkcji za każdym razem, gdy postać otrzymuje obrażenia (np. w evencie kolizji z wrogiem/pociskiem).
  7. @Fervi i ten drugi: zachowujecie się jak typowe menele, co to potrafią rozprawiać o polityce i sytuacji w kraju dwadzieścia cztery na dobę - i to jedyne, co potrafią.
  8. Można tak zrobić, ale nie ma wtedy pewności, czy wczytany string rzeczywiście może być zamieniony na liczbę - nie można sprawdzić tego za pomocą is_real(real(get_string())), a użycie real(string_digits(get_string())) zamienia np. 89.22 na 8922. Oczywiście nic nie stoi na przeszkodzie, by napisać własny parser : P
  9. get_rekt() Nie ma funkcji get_real(), jest za to get_integer(), ktra przyjmuje tylko liczby całkowite, czyli twoje canvas_w, nie może przyjąć wartości np. 84.7
  10. Trzeba pokombinować z parametrami tej funkcji, być może nie wszystko masz tak jak trzeba (np. czy argument col jest ustawiony na false itd.) Ewentualnie możesz skorzystać z podobnej funkcji physics_joint_prismatic_create(), opis w dokumentacji.
  11. Amaterasu

    Drunken Pistoletov

    Usuń tego gościa z logo pls
  12. Każdy z obiektów potworów powinien mieć kod rysowania paska HP w swoim Draw. Pamiętaj, żeby zamiast draw_cośtam(200,200,itd.), co będzie rysowało te paski dokładnie w tej pozycji w roomie, pisać draw_cośtam(x+liczba,y+liczba,itd.), spowoduje to, że te paski będą rysowane w stałej odległości od danego obiektu.
  13. Zamień 'sprite_add_sprite(spr_table2)' na 'sprite_index = spr_table2'
  14. GML nowy=surface_create(view_wview[0],view_hview[0])// tworzenie surface alpha=0 alarm[0]=30 GML surface_set_target(nowy) draw_clear_(c_black); if obj_player_self.latarka with(obj_player_self) { draw_set_blend_mode(bm_src_color) draw_circle(x-view_xview[0], y-view_yview[0], 60, 0) draw_set_blend_mode(bm_normal) } surface_reset_target() W jakim obiekcie masz wykonywany ten kod? Czy robisz więcej niż jeden taki obiekt?
  15. Jeśli to jedyny room, w którym masz włączony silnik fizyczny, to może być wina starego sprzętu.
  16. A dokładniej GML virtual_key_add(x, y, w, h, keycode);
  17. Czyli, że twoja postać 'wbija' się w obiekt, na który ląduje. Oznacza to m.in. że próba sprawdzenia, czy przed postacią stoi przeszkoda za pomocą place_free() jest z góry skazana na porażkę. Po kodzie lądowania daj: GML move_outside_solid(90,vspeed) Pamiętaj też, żeby odpowiednim obiektom zaznaczyć solid.
  18. MUGEN-y stosują system 'stanów' i 'flag'. Każda kombinacja klawiszy zmienia stan postaci. Każdy stan posiada kod inicjujący, w nim można np. napisać, żeby przy zmianie stanu atakowało wroga przed postacią. Istnieje kilka globalnych stanów (mają przypisane ujemne liczby) oznaczające np. bezczynność, bycie martwym itp. Flagi pozwalają jednemu stanowi przystosowanie się do zachowania postaci (np. stan 150 odpali tylko, gdy flaga 'AIR' jest włączona). Stany również mogą być flagami. System jest bardzo złożony i nie ogranicza się jedynie do zmiany stanów (można też tworzyć nowe obiekty, klony, pociski), ale dzięki niemu można stworzyć dowolną postać z każdej istniejącej bijatyki.
  19. Mam na myśli dokładne przekształcenie. Czyli dowolną sieć o N warstwach ukrytych można zamienić w sieć z jedną warstwą o tej samej funkcjonalności.
  20. Ciekawostka: każda sieć wielowarstwowa z N warstwami ukrytymi może być przekształcona w sieć z jedną warstwą ukrytą
  21. Perceptron może zwracać dowolną wartość od -1 do 1, zresztą ten zakres można dowolnie modyfikować. Poszukaj sobie różnych funkcji aktywacji, oprócz skokowych są też liniowe, sigmoidalne itp. Sęk w tym, że pojedynczy perceptron nie nadaje się do tego typu zadań - jest to zbyt prosta struktura, żeby można nią było modelować złożone zachowania, zależne od dużej ilości bodźców.
  22. Przy wczytaniu gry możesz dodać np. coś takiego: GML if(room = room1) muzyka = muzyka1 //...i tak dalej, dla każdego roomu inna muzyka</span>
  23. Cztery wyjścia to chyba nie tak dużo wg mnie Edyt: a, o takie mrówki chodzi, z tym byłby problem
×
×
  • Dodaj nową pozycję...