Skocz do zawartości

I am vader

Użytkownicy
  • Postów

    1 887
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    20

Odpowiedzi opublikowane przez I am vader

  1. A spróbuj zrobić tak:

    Jeżeli nie styka się z trawą rysuj normalnie.

    Jeżeli styka się z trawą rysuj dolną część, potem trawę na pozycji obiektu z którym kolidujesz, potem górną połowę.

    Chociaż jak teraz myślę to może być z tą kolejnością operacji problem przy zetknięciu z dwoma obiektami trawy.

    Edit: Mimo zauważenia błędu w mojej logice i tak zapostowałem bo jakby zedytować ten proces myślowy którym zarzuciłem raczej znajdziesz rozwiązanie

  2. Tego typu discordy zyskują dużo z kanału do chatowania o tematach niezwiązanych z grą. Jak przekonasz paru znajomych, albo gości ze środowiska którzy chcą wspomóc projekt, żeby codziennie chatowali o byle gównienkach na takim kanale, inni użytkownicy dołączą się do rozmów i zaczną traktować discord projektu jako jeden ze swoich "domowych" chatów. A to już duża pomoc dla marketingu, bo nikt nie lubi @everyone z martwych chatów.

  3. Ja bym jednak zrobił tymczasową wyprzedaż aby zaliczyć kilka ocen i otrzymać feedback we wczesnej wersji. Wiesz, że użytkownicy GMa do najbogatszych nie należą.

     

    Przydałby też się exe pokazowy w którym można przechadzać się po poziomie i jakieś wyskakujące okienka z kawałkami kodu użytymi do wczytania poziomu, żeby pokazać jakie to łatwe w użyciu jest.

  4. Problemem jest to, że aktualizujesz pozycję w stepie który się dzieje 30/60/ile tam ustawiłeś razy na sekundę zamiast tak często jak draw LUB w tym, że pozycja X/Y obiektu aktualizuje się PRZED ruszeniem view'a.

    jeżeli wrzucisz aktualizację do draw powinno działać. Tylko tego nie nadużywaj, bo draw dzieje się częściej od step i może wpłynąć na optymalizację gry.

     

    Edit: Nie zauważyłem że wybrałeś już odpowiedź. Nvm.

  5. Edit: Dopiero przeczytalem że nie miało być z lini... no trudno na darmo się rozpisałem. I tak zostawię tutaj dla potomnych.

    Edit2: Chyba że konkretnie chodzi Ci o nie RYSOWANIE lini oraz nie używanie wbudowanych funkcji kolizyjnych, wtedy poniższe jest dla Ciebie.

    Edit3: Dobra koniec tych editów ;) Nie wiem czy licencja którą wybrałem jest dobra, chodzi o to żeby było za darmo do użycie również komercyjnego bez potrzeby podawania autora w creditsach czy jakichkolwiek plikach.

    Edit4: Walić napisałem własną licencję.

     

    Daj Lajka bo się napracowałem kiedyś ;)

     

    Sam tego potrzebowałem do rayguna do mojego projektu, więc zaadoptowałem takie coś, licencja kodu powiedzmy GNU General Public License, więc rób co chcesz z tym.

     

    ///lines_intersect(ax1,ay1,ax2,ay2,bx1,by1,bx2,by2)
    // 90% of code adapted from C script by Gavin @ stackoverflow,
    //uses algorithm from "Tricks of the Windows Game Programming Gurus"
    //by Andre LaMothe
    // License: Free to view, modify and redistribute, both commercially
    // and for free without need to acknowledge original creator, as long
    // as original creator is credited within this code. It is therefore
    // not permitted to remove this comment attributing original creator.
    // This script is provided as-is with no warranty. Neither creator,
    // nor any person modifying this script takes any responsibility for
    // any damage caused by this script.
    // Original version by Przemek "LeD" Liedtke
    var ax1=argument0,ay1=argument1,ax2=argument2,ay2=argument3,
        bx1=argument4,by1=argument5,bx2=argument6,by2=argument7;
     var _ret; //Returned array
     _ret[0] = 0;//1 for found
     _ret[1] = 0;//x (if [0]=1)
     _ret[2] = 0;//y (if [0]=1)
     var s1_x,s1_y,s2_x,s2_y;
     s1_x = ax2 - ax1;     s1_y = ay2 - ay1;
     s2_x = bx2 - bx1;     s2_y = by2 - by1;
     var s,t,sp;
     sp = (-s2_x * s1_y) + (s1_x * s2_y);
     if sp=0 return _ret;
     s = ((-s1_y * (ax1 - bx1)) + (s1_x * (ay1 - by1))) / sp;
     t = (( s2_x * (ay1 - by1)) - (s2_y * (ax1 - bx1))) / sp;
     if (s >= 0 && s <= 1 && t >= 0 && t <= 1){
      // Collision detected
      _ret[0] = 1;
      _ret[1] = ax1 + (t * s1_x);
      _ret[2] = ay1 + (t * s1_y);
     }
    return _ret;

     

    Zwraca: Tablicę jednowymiarową z trzeba pozycjami:

    [0]: Czy znalazło punkt styczności 

    [1]: X

    [2]: Y

     

    Smacznego.

    A i zastosowanie:

    Użyc lines_intersect na każdym boku, np. tak:

    //_col to id obiektu ktory sprawdzamy.
    
           x1 = _col.bbox_left-1;
           x2 = _col.bbox_right+1;
           y1 = _col.bbox_top-1;
           y2 = _col.bbox_bottom+1;
           w1 = lines_intersect(x,y,xx,yy,x1,y1,x1,y2); //Left
           w2 = lines_intersect(x,y,xx,yy,x2,y1,x2,y2);; //Right
           w3 = lines_intersect(x,y,xx,yy,x1,y2,x2,y2); //Bottom
           w4 = lines_intersect(x,y,xx,yy,x1,y1,x2,y1); //Top

    Musisz każdy bok powiększyć o 1 pixel bo inaczej na IDEALNEJ styczności z rogiem nie wykryje go. Nie do końca rozumiem czemu.

     

     

  6. Kontekst: Znak ! znaczy to samo co not

     

    zamiast robić if !vspeed=0 zrób if vspeed!=0

     

    Możliwe że kompilator interpretuje !vspeed jako "Odwóć vspeed", gdzie wartość 0 i mniej to negative a powyżej 0 to positive. Program zamienia wartość dodatnią (>0)(czyli TRUE) na 0 (czyli FALSE), podczas gdy wartość jest ujemna (<0) jest już FALSE więc zostaje zmieniona na TRUE czyli 1.

    A że 1 nie równa się 0 kod się nie wykonuje.

    Tutaj jeszcze tabelka dla zwizualizowania sytuacji

    Liczba Wartość Odwrócona wartość Odwrócona wartość w formie liczbowej  
    <0 FALSE TRUE 1 Nie równe 0, nie wykonuje kodu.
    0 FALSE TRUE 1 Nie równe 0, nie wykonuje kodu.
    >0 TRUE FALSE 0 Równe 0, wykonuje kod
  7. Odświeżam starego laptopa. Po pierwsze CPU jest 64-bitowe a system 32-bitowy więc zmienie system, ale chcę przy okazji zainstalować SSD. Dla testu wziąłem SSD z mojego kompa na którym jest Windows 7 i tu jest ciekawa rzecz. System operacyjny laptopa (Windows Vista) wykrywa dysk SSD i może z niego korzystać bezproblemowo, ale w BIOS nie wykrywa SSD jako bootowalne urządzenie. Obawiam się, że może być tak samo jeśli kupie SSD już do tego laptopa. Ma ktoś jakiś pomysł dlaczego BIOS nie widzi SSD jako bootowalny, a system operacyjny widzi jako nośnik danych?

  8. 1) Greenlighta nie ma od roku

    2) Wrzucenie gry o którym mówisz to umieszczenie gry na workshopie game makera, tak że inni posiadacze steamowej wersji game makera mogą ją zasubskrybować i pograć. Nie ma to nic wspólnego z faktycznym umieszczeniem gry na steam czy sprzedaży.

  9. Dużo w tej gierce gameplay'u nie ma, ale nie jest źle.

    Postaraj się wprowadzić zapamiętywanie wyniku, różne tekstury(może zmienne wraz z ntą przeszkodą) i inne drobne rzeczy żeby to trochę rozwinąć.

    A i plusik za waterflame - glorious morning 2.

×
×
  • Dodaj nową pozycję...