Skocz do zawartości
ANtY

Nad czym aktualnie pracujesz?

Rekomendowane odpowiedzi

Aha, no w sumie tak będzie najlepiej. Zrobię że np. anim[frame,bodyPart]

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Tak wiem że w GMS1 był ten substytut prawdziwych macierzy ale no GMS2 ma już w pełni funkcjonalne.

Anyway udało mi się ale to jest bez sortowania depth spritów więc nachodzą na siebie brzydko:

 

hR8kf1w.gif kxe3UYV.gif

Taki sobie o ludzik bez rąk. Ma tylko 2 nogi które się kręcą jak koła no i ma głowę. Gify są z animacją nóg i bez a kod wygląda tak:

yaw += 4;
legAnim -= 28;

// root body
var center = matrix_build(x, y, z, 0, 0, yaw, 1, 1, 1);
var posArray = matrix_transform_vertex(center, 0, 0, 0);
draw_circle_color(posArray[0], posArray[1]+posArray[2], 4, c_red, c_red, 0); // ROOT position

// leg center
var legCenter = matrix_build(0, 0, 0, legAnim, 0, 90, 1, 1, 1);
var vLegCenter = matrix_multiply(legCenter, center);
var posArrayLegCenter = matrix_transform_vertex(vLegCenter, 0, 0, 0);

// leg right
var legR = matrix_build(-16, 0, 16, 0, 0, 0, 1, 1, 1);

// leg left
var legL = matrix_build(16, 0, 16, 0, 0, 0, 1, 1, 1);

// draw legs
var vL = matrix_multiply(legL,vLegCenter);
var vR = matrix_multiply(legR, vLegCenter);
var posArrayL = matrix_transform_vertex(vL, 0, 0, 0);
var posArrayR = matrix_transform_vertex(vR, 0, 0, 0);
draw_sprite(sPoint, 0, posArrayL[0], posArrayL[1]+posArrayL[2]);
draw_sprite(sPoint, 0, posArrayR[0], posArrayR[1]+posArrayR[2]);
draw_line(posArrayLegCenter[0], posArrayLegCenter[1]+posArrayLegCenter[2], posArrayL[0], posArrayL[1]+posArrayL[2] );
draw_line(posArrayLegCenter[0], posArrayLegCenter[1]+posArrayLegCenter[2], posArrayR[0], posArrayR[1]+posArrayR[2] );

// face
var height = 24;
var face = matrix_build(24, 0, -height, 0, 0, 0, 1, 1, 1);
var vFace = matrix_multiply(face, center);
var posArrayFace = matrix_transform_vertex(vFace, 0, 0, 0);
draw_sprite(sPoint, 0, posArrayFace[0], posArrayFace[1]+posArrayFace[2]);
draw_line_color(posArray[0], posArray[1]+posArray[2], posArrayFace[0], posArrayFace[1]+posArrayFace[2], c_red, c_red);
var posArrayH = matrix_transform_vertex(center, 0, 0, -height); 
draw_line_color(posArray[0], posArray[1]+posArray[2], posArrayH[0], posArrayH[1]+posArrayH[2], c_red, c_red);
draw_line_color(posArrayFace[0], posArrayFace[1]+posArrayFace[2], posArrayH[0], posArrayH[1]+posArrayH[2], c_red, c_red);

 

Edit:

Fajnie teraz można płynnie przechodzić z widoku izometrycznego w top-down spłaszczając skalę Z roota:

var center = matrix_build(x, y, z, 0, 0, yaw, 1, 1, (1+sin(current_time*0.001))/2);


 

OMpN4DZ.gif

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Sztos. 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Kolejny dzień, zmieniłem trochę strukturę współrzędnych

legAnim[aPart[partNum,axis],frame]=something

więc coś w rodzaju trójwymiarowej tablicy z dwóch dwuwymiarowych tablic. Dzięki temu można już płynnie padać na ziemię, działa też padanie na boki ale nie jest to jeszcze zautomatyzowane. Oczywiście nadal wygląda to kiepsko, nie ma pozy padania i muszę pomyśleć jak najlepiej rysować głowę.

WBhmdPE.gif9x9VOKv.gif

  • Haha (+1) 1

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Hm, może po prostu punktem wokół którego postać sie porusza nie powinny być stopy, a klatka piersiowa ? Wtedy kładzenie sie by lepiej działało (i by się obracał względem środka, a nie nóg). No i cień by był w dobrym miejscu (tylko na leżąco powinien się powiększać).

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Również pochwalę się swoimi postępami, po małej przerwie, wróciłem do Dywersanta, silnik w zasadzie już gotów, pousuwałem drobne utrapienia. Niby ukończony, ale jednak ciągle wpadam na nowe pomysły, w wersji demo brakowało moim zdaniem wydarzeń o charakterze "Pirotechnicznym" Dodałem ręczny miotacz granatów, możliwość wysadzenia pojazdów(wcześniej chciałem zrobić możliwość poruszania się nimi, ale w zasadzie po jaką cholerę?) Nasi wrogowie po wpadnięciu na "kąsek piromana" randomowo rozwalają się na kawałki po całej mapie. Z fabularnych smaczków, naszymi wrogami nie będą jedynie Niemcy, ale również Amerykanie, a także Polacy - tak zwani zdrajcy. Jak na razie to chyba trochę przesadziłem z poziomem trudności, bo na chwilę obecną jest on w ch** wysoki :D Sam miewam problemy z testowaniem, bo obrywam za często, albo to może kwestia wyjścia z wprawy :) Pozdrawiam 

 

Screen

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
16 godzin temu, LolikZabijaka napisał:

Jak na razie to chyba trochę przesadziłem z poziomem trudności, bo na chwilę obecną jest on w ch** wysoki :D Sam miewam problemy z testowaniem, bo obrywam za często, albo to może kwestia wyjścia z wprawy

przeczytałem gdzieś kiedyś dobrą wskazówkę odnośnie designu: jeżeli wydaje ci się, że poziom trudności twojej gry jest w sam raz, prawdopodobnie jest zbyt trudna

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

No na to wygląda :D Bo wiadomo, że jako twórca, potrafię się lepiej poruszać, znam mechaniki itp. A przyjdzie osobnik, który pierwszy raz to ogrywa i pada przy pierwszym przeciwniku :D Z drugiej strony udało mi się spełnić pewne pierwotne założenie, aby pilnować się, przy każdym kroku, wiadomo, protagonista jest jeden, przeciw całemu oddziałowi i w realnym świecie byłoby równie trudno się przez to przebić :D

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

tylko pamiętaj, że to może brzmieć dobrze na papierze, a w rzeczywistości bardzo trudno osiągnąć odpowiedni balans przy takim zamyśle i gra może być po prostu niegrywalna. jeżeli nawet dla ciebie jest trudna, to większość graczy po prostu wyłączy ją jeszcze na pierwszej mapie, a chyba nie o to chodzi ;) 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

A dziękuję Ci bardzo, miło to słyszeć, mimo, iż screen pochodzi z poziomu w fazie rozwoju, który w tym momencie, według mnie wygląda słabo :)

Tutaj mały bonus (bynajmniej nie BGC) Udało mi się zrobić na podstawie przykładu Psichixa prymitywnego ragdolla, co mocno urozmaica zabawę, tutaj screen z wersji testowej :Drag_sc.png

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×