Skocz do zawartości

Amaterasu

Użytkownicy
  • Postów

    390
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Amaterasu

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

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

  3. inne pytanko jak zrobić podział dmg chodzi o

    hp=800//hp

    shd=400//osłona

    damage

    osłona pochłania zależy jaka ileś tam % np 20/80 //poszycie/osłona i jak odejmować to od tego

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

  4. 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?

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

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

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

×
×
  • Dodaj nową pozycję...