Skocz do zawartości

Amaterasu

Użytkownicy
  • Postów

    390
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Amaterasu

  1. Akurat path jest świetną metodą do zapisywania checkpointów - jedyne znane mi narzędzie w GM-ie będące listą, która pod jednym indeksem zapisuje dwie zmienne. Można je stosować nie tylko do tworzenia ścieżek do poruszania się, ale też np. do zapisu pozycji grup obiektów (power-upy, przyciski, budynki).

  2. Nie można zerować punktów za każdym razem, gdy przechodzisz do roomu.

    Dobrze, że korzystasz z GM 8, w tej wersji masz jeszcze funkcję varlable_global_exists(zmienna). W kodzie tworzenia zmiennych zamiast

    GML
    global.zmienna = coś

    napisz

    GML
    if(variable_global_exists('zmienna') = 0) global.zmienna = coś

    W GM Studio nie ma już takiej funkcji.

  3. Ciężko mi sobie wyobrazić, że Carmageddon nie był inspiracją do tej grafiki.

    Wygląda nieźle, ale dym nadal skopany, przypomina teraz dżdżownicę - może usuń dym całkowicie, ale daj animację świecenia się końcówki tego cygara/papierosa/czego tam.

  4. Nawet gdyby Unity nie miał cell shadingu i sam byś go wykonał - to, co tu masz, kłuje w oczy niedopasowaniem elementów (kolory outline'ów różnią się znacznie od kolorów obiektów, włączony shading mimo braku cieni) i odpychałoby niedzielnego gracza, gdyby miał oceniać grę na podstawie screenów. Bez tekstur nic z tego nie będzie (chyba że masz w zanadrzu jakiś trik graficzny).

  5. Nie mam możliwości sprawdzenia tego w tej chwili na moim sprzęcie, ale może dałoby się malować czarne kopie kleksa na surface A o wymiarach Width*Height, zeskalować surface A do surface B o wymiarach 1*1 (czyli piksel) i sprawdzić wartość tego piksela? Mam mgliste przeczucie, że mogłoby to działać, o ile włączona jest interpolacja między pikselami (w ustawieniach albo jedną z funkcji)

  6. Gwoli ścisłości, to, co robisz, nie jest algorytmem genetycznym, a zwyczajnym algorytmem randomizowanym. W dodatku nie spełni on swojej roli - nawet po wyeliminowaniu błędów nie otrzymuję żadnych wyników, żadnych liczb. Nawet gdybym jakieś liczby dostał, nie znajduję w algorytmie żadnego sposobu na zapisanie dobrych wyników w celu porównania z kolejnymi.

  7. Zrobiłbym to następująco:

    Obiektowi "ramka" przypisz zmienną kontrolną (np. k_ob) i ustaw ją na -1. Przy naciśnięciu spacji w "ramce" wpisz taki kod:

    GML
    if(!k_ob) //jesli nie ma zaznaczonego obiektu

    {

    k_ob = instance_position(x,y,obiekt) //zaznacz obiekt, na ktory najechala ramka

    }

    else k_ob = 0 //w przeciwnym wyadku odznacz obiekt</span>

    W kodzie poruszania obiektów wystarczy dodać warunek

    GML
    if(ramka.k_ob = id) //jesli jestem zaznaczonym obiektem</span>

    Jeśli nie wiesz, czego służą użyte funkcje/zmienne, poczutaj o nich w dokumentacji.

  8. Zakładam, że Twój ruch odbywa się na zasadzie "Key Press [button]"/"Key Release [button]" + "Step". Jeżeli tak jest, to prawdopodobnie masz tam pewną zmienną sterującą, od której zależy, czy Twoja postać się porusza. Np. "moving = 1", "if(moving == 1) speed = 4" itp.

    Taki problem jest do rozwiązania, należy każde "moving" zamienić na "global.moving", zaś w zakładce "Creation code" pierwszego rooma (czyli tego, z którego zaczynasz grę) wpisać linijkę:

    GML
    if(variable_global_exists("moving") == false) global.moving = 0

    Sprawi ona, iż gra zarejestruje zmienną globalną do pamięci, czyli będzie dostępna zawsze, dla każdego obiektu, do końca gry. W tym przypadku interesuje nas tylko, aby była dostępna dla głównej postaci, ale w każdym roomie, co właśnie osiągnęliśmy.

    Jeżeli ruch tej postaci napisałeś w inny sposób niż podejrzewam, to można się tym kodem co najwyżej podetrzeć : (

×
×
  • Dodaj nową pozycję...