-
Postów
422 -
Dołączył
-
Ostatnia wizyta
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez m@rcixxx
-
Nieprawda. Trzeba pozycje dać w draw sprite.
-
W czym mamy ci niby jeszcze pomóc ?
-
Jak zrobić realistyczne cienie w grze top down ?
m@rcixxx odpowiedział(a) na m@rcixxx temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Surface jest rysowany przez jeden obiekt o jednym depth. Drzewo może mieć depth -111111111 a i tak depth cienia będzie miał tyle co obiekt surface. A co do cienia pod takim samym kątem to można to zmienić. Wystarczy zamiast GML draw_sprite_ext(moj_sprite,image_index,x+30,y+30,3,1, point_direction(x,y,x+50,y+50),c_black,1); dać GML draw_sprite_ext(moj_sprite,image_index,x+lengthdir_x(30,kat_cienia),y+lengthdir_y(30,kat_cienia),3,1, point_direction(x,y,x+lengthdir_x(50,kat_cienia),y+lengthdir_y(50,kat_cienia)),c_black,1); -
Jak zrobić realistyczne cienie w grze top down ?
m@rcixxx odpowiedział(a) na m@rcixxx temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Mistrzu mój : D ! -
Jak zrobić realistyczne cienie w grze top down ?
m@rcixxx odpowiedział(a) na m@rcixxx temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Może najpierw niech ten obiekt surface się znajdzie w roomie ? Edit: muszę przyznać, że nie wychodzi mi te rysowanie kilku surface'ów w jednym roomie. Obiekty odwołują się tylko do pierwszego. Możecie pomóc rozwiązać ten problem ? -
Jak zrobić realistyczne cienie w grze top down ?
m@rcixxx odpowiedział(a) na m@rcixxx temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Właśnie sprawdziłem kilka rzeczy i trzeba będzie zacząć kombinować. Trzeba chyba pętlą narobić obiektów surface wielkości 1024x768 i je dezaktywować poza viewem. Inaczej coś nie chce pójść :/. -
Jak zrobić realistyczne cienie w grze top down ?
m@rcixxx odpowiedział(a) na m@rcixxx temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Chyba właśnie rozwiązałeś problem fps'ów u mnie :D. -
1. Tworzymy obiekt surface i wpisujemy w podanych eventach co trzeba. CREATE: GML global.blend=0; global.surf=surface_create(room_width,room_height); surface_set_target(global.surf); draw_clear_alpha(c_black,0); surface_reset_target(); depth=5+round(random(5)) //opcjonalnie</span> ROOM END: GML surface_free(global.surf); DRAW: GML draw_surface_ext(global.surf,0,0,1,1,0,c_white,0.5); 2. W dowolnym obiekcie, który posiada bądź nie posiada sprite'a, wpisujemy co trzeba. Obiekt nie musi mieć eventu draw z linijką na rysowanie samego siebie. Jeśli mamy ustawionego sprite'a w okienku obiektu lub ustawiliśmy go kodem (np. sprite_index=spr_ludek) to wpisujemy w poniższym kodzie w należytym miejscu sprite_index. Jeśli nie to wpisujemy nazwę (istniejącego) sprite'a jaki nam się podoba. END STEP: GML //ja dla przykładu mam takie cienie postaci ale //lepiej ich nie używaj bo się zgubisz i już nie znajdziesz drogi powrotnej, //przewiń w dół i tam znajdziesz odpowiedni kod. if surface_exists(global.surf) { surface_set_target(global.surf); draw_clear_alpha(0,0); draw_sprite_ext(spr_noga,noga_p_index, x+20*wielkosc+lengthdir_x(noga_p_odl*wielkosc,image_angle+noga_p_odl_kat), y+20*wielkosc+lengthdir_y(noga_p_odl*wielkosc,image_angle+noga_p_odl_kat), wielkosc*noga_p_skala,wielkosc,image_angle,c_black,1); draw_sprite_ext(spr_noga,noga_l_index, x+20*wielkosc+lengthdir_x(noga_l_odl*wielkosc,image_angle+noga_l_odl_kat), y+20*wielkosc+lengthdir_y(noga_l_odl*wielkosc,image_angle+noga_l_odl_kat), wielkosc*noga_l_skala,wielkosc,image_angle,c_black,1); draw_sprite_ext(spr_na_graczu,bron_p_index, x+35*wielkosc+lengthdir_x(ramie_p_odl*wielkosc,image_angle+ramie_p_odl_kat) +lengthdir_x(przed_ramie_p_odl*wielkosc*ramie_p_skala,image_angle+ramie_p_kat+przed_ramie_p_odl_kat) +lengthdir_x(bron_p_odl*wielkosc*przed_ramie_p_skala,image_angle+ramie_p_kat+przed_ramie_p_odl_kat+bron_p_odl_kat), y+35*wielkosc+lengthdir_y(ramie_p_odl*wielkosc,image_angle+ramie_p_odl_kat) +lengthdir_y(przed_ramie_p_odl*wielkosc*ramie_p_skala,image_angle+ramie_p_kat+przed_ramie_p_odl_kat) +lengthdir_y(bron_p_odl*wielkosc*przed_ramie_p_skala,image_angle+ramie_p_kat+przed_ramie_p_odl_kat+bron_p_odl_kat), image_xscale,image_yscale,image_angle+bron_p_kat,c_black,0.7) draw_sprite_ext(spr_na_graczu,bron_l_index, x+35*wielkosc+lengthdir_x(ramie_l_odl*wielkosc,image_angle+ramie_l_odl_kat) +lengthdir_x(przed_ramie_l_odl*wielkosc*ramie_l_skala,image_angle+ramie_l_kat+przed_ramie_l_odl_kat) +lengthdir_x(bron_p_odl*wielkosc*przed_ramie_l_skala,image_angle+ramie_l_kat+przed_ramie_l_odl_kat+bron_l_odl_kat), y+35*wielkosc+lengthdir_y(ramie_l_odl*wielkosc,image_angle+ramie_l_odl_kat) +lengthdir_y(przed_ramie_l_odl*wielkosc*ramie_l_skala,image_angle+ramie_l_kat+przed_ramie_l_odl_kat) +lengthdir_y(bron_l_odl*wielkosc*przed_ramie_l_skala,image_angle+ramie_l_kat+przed_ramie_l_odl_kat+bron_l_odl_kat), image_xscale,image_yscale,image_angle+bron_l_kat,c_black,0.7) draw_sprite_ext(spr_przed_ramie,przed_ramie_p_index, x+35*wielkosc+lengthdir_x(ramie_p_odl*wielkosc,image_angle+ramie_p_odl_kat) +lengthdir_x(przed_ramie_p_odl*wielkosc*ramie_p_skala,image_angle+ramie_p_kat+przed_ramie_p_odl_kat), y+35*wielkosc+lengthdir_y(ramie_p_odl*wielkosc,image_angle+ramie_p_odl_kat) +lengthdir_y(przed_ramie_p_odl*wielkosc*ramie_p_skala,image_angle+ramie_p_kat+przed_ramie_p_odl_kat), wielkosc*przed_ramie_p_skala,wielkosc,image_angle+przed_ramie_p_kat,c_black,1); draw_sprite_ext(spr_przed_ramie,przed_ramie_l_index, x+35*wielkosc+lengthdir_x(ramie_l_odl*wielkosc,image_angle+ramie_l_odl_kat) +lengthdir_x(przed_ramie_l_odl*wielkosc*ramie_l_skala,image_angle+ramie_l_kat+przed_ramie_l_odl_kat), y+35*wielkosc+lengthdir_y(ramie_l_odl*wielkosc,image_angle+ramie_l_odl_kat) +lengthdir_y(przed_ramie_l_odl*wielkosc*ramie_l_skala,image_angle+ramie_l_kat+przed_ramie_l_odl_kat), wielkosc*przed_ramie_l_skala,wielkosc,image_angle+przed_ramie_l_kat,c_black,1); draw_sprite_ext(spr_ramie,ramie_p_index, x+35*wielkosc+lengthdir_x(ramie_p_odl*wielkosc,image_angle+ramie_p_odl_kat), y+35*wielkosc+lengthdir_y(ramie_p_odl*wielkosc,image_angle+ramie_p_odl_kat), wielkosc*ramie_p_skala,wielkosc,image_angle+ramie_p_kat,c_black,1); draw_sprite_ext(spr_ramie,ramie_l_index, x+35*wielkosc+lengthdir_x(ramie_l_odl*wielkosc,image_angle+ramie_l_odl_kat), y+35*wielkosc+lengthdir_y(ramie_l_odl*wielkosc,image_angle+ramie_l_odl_kat), wielkosc*ramie_l_skala,wielkosc,image_angle+ramie_l_kat,c_black,1); draw_sprite_ext(spr_tors,tors_index,x+30*wielkosc,y+30*wielkosc,wielkosc*3,wielkosc, point_direction(x,y,x+50*wielkosc,y+50*wielkosc),c_black,1); draw_sprite_ext(spr_glowa,glowa_index, x+40*wielkosc+lengthdir_x(glowa_odl*wielkosc,image_angle+glowa_odl_kat), y+40*wielkosc+lengthdir_y(glowa_odl*wielkosc,image_angle+glowa_odl_kat), wielkosc*3,wielkosc,point_direction(x,y,x+50*wielkosc,y+50*wielkosc),c_black,1); surface_reset_target(); } //odpowiedni kod if surface_exists(global.surf) { surface_set_target(global.surf); draw_clear_alpha(0,0); draw_sprite_ext(moj_sprite,image_index,x+30,y+30,3,1, point_direction(x,y,x+50,y+50),c_black,1); // wartość image_xscale wynosi //jak widać 3, ta wartość rozciąga cień, image yscale pozostało bez zmian (wynosi 1). surface_reset_target(); } 3. WAŻNE Funkcja GML draw_clear_alpha(0,0); może być użyta tylko przez jeden obiekt "rysujący" cień. Np. mamy obiekt o_gracz i dajemy mu tę/ą funkcję i reszta obiektów rysujących cień tym samym kodem się już bez niej obejdzie a i cień będzie "rysowała" dobrze. Czekam na propozycje jak zrobić zmienny depth cienia :D (w zależności od depth obiektu "rysującego" cień).
-
Okienko od statystyk. Muszę jeszcze dodać resztę cech i zrobić przewijanie jak w oknie dialogowym.
-
A masz uwzględniony kolor w zależności od temperatury ? Np. czerwona - chłodna, niebieska - ultra gorąca ? Masz obiekty typu czarne dziury, pulsary, mgławice itd ? Fajnie by było ;).
-
topdown CAR ENGINE by M@rcixxx Odbiło mi. Ale mają być creditsy i to się tyczy wszystkich.
-
Dzięki! Teraz będę robił z 2x większą chęcią : D. Masz rację, trzeba to poprawić. Jak się wyrobię to jutro wrzucę tutorial jak robić takie jednolite i rozciągnięte cienie.
-
Zmieniłem parę rzeczy: Napiszcie może co zmienić a co zostawić ;).
-
Więc z czym do ludzi, w edytorze kodu masz podpowiedzi na dole a na górze okna gm'a przycisk help i wszystko od a do z opisane.
-
Jeśli chcesz mieć realistycznie to przede wszystkim zrezygnuj z automatu w Subaru Imprezie. Zrób sobie zmienne z wartością przyspieszenia i w zależności od biegu będzie się zmieniało. Co od gonienia to zrób sobie w obj. policja np. if gracz.speed>50 && distance_to_object(gracz)<100 { goni=1 }; if goni=1 { mp_potential_step(gracz.x,gracz.y,predkosc,omijaj solid/wszystko) }; A reszta to tylko zwykłe operowanie na zmiennych np. draw_text_color(view_xview+100,view_xview+100,bieg,c_white,c_white,c_white,c_white,1); Edit: A co do kolorowania to masz opisane argumenty w draw_sprite_ext i operuj na nich.
-
Ale ona ma takie rysy twarzy ;).
-
Pochodzenie każdej grafiki jest inne niż piszesz. Ale ok. Usunę czarne obwódki ale cieniowanie przecież jest, nie będę przecież robił odwzorowania kuli. A, i masz coś przeciwko drzewom ? Nikt jeszcze nie miał pretensji o nie a dawałem je już dawno w galerii grafik i jak zaczynałem ten projekt 3 m-ce temu. Jak gui to inna bajka to napisz co konkretnie jest nie tak ;).
-
Nowe grafiki: Muszę dopracować co nieco, np. żeby tło slota się zmieniało na puste gdy coś jest wsadzone do niego. Jutro będzie screen z resztą ikonek i obwódkami wokół slotów. Akurat się trafiło, że było ponad 150 obiektów w roomie i fps'y wyniosły 30/40. Ni jest źle.
-
Damn, wygląda starzej ode mnie <_<.
-
W sumie tak, jedna musi chociaż być. Zrobiłem jednolite cienie wszystkich obiektów. Ładnie wygląda ale screena dam jutro i będzie mały bonus :). I jeszcze jedno, zauważyłem dziwną rzecz po zrobieniu tych cieni - fps'y spadają przy średnio 10% obciążeniu procka :o (tak przy 40-50 obiektach zaczyna spadać). Room_speed musiałem do 40 zmniejszyć, żeby dało się normalnie grać. Czyżby karta graficzna nie wyrabiała ?
-
@ DarkTeam - ja chcę to zrobić bez zmiennych. @ Threef - niech pocisk będzie takiej samej wielkości cały czas, gdy skończy mu się zmienna np. 'czas ' to tworzy wybuch o stałym promieniu ale różnych obrażeniach. Zbytnie przesładzanie efektów może uzależniać a i pogarsza wygląd ;). Edit: @ Darkteam - bez zmiennych własnych.
-
Mam to w planach ale zajmę się tym później, to kosmetyka. Chociaż zrobienie, że w dzień atakuje mnie bandyta a w nocy szkielet będzie trudniejsze ;).
-
Cienie części ciała są już skończone i połączone. Jest są dwa problemy: cień domu na mnie nie pada, no i fps. Ujednolicę cienie drzew później, może to da wzrost fps. Cień domu jest zrobiony pętlą for i rysuje 10 cieni jeden po drugim i wrzuciłem to w kod surface'a i to daje efekt takiego rozciągnięcia.