-
Postów
4 891 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
53
Typ zawartości
Profile
Forum
Wydarzenia
Treść opublikowana przez I am Lord
-
Fajny kształt statku mi wyszedł, zobaczymy co z tego mi wyjdzie xD Pewnie skopię jak zwykle tekstury.
-
Wiedziałem że taka odpowiedź się pojawi. Tzn pytanie czy będzie ciężko ogarnąć. A wiesz czemu? Bo walnąłeś na połowę ekranu kod z jakąś porąbaną składnią. I każdy laik który zobaczy tego screena się odstraszy.
-
Trochę zmienna grubość pixeli mnie razi po oczach.
-
O kurde to brzmi genialnie. Szkoda że narazie tylko 3 utworki tego wykonawcy powstały.
-
Importowanie modeli 3D
I am Lord opublikował(a) temat w Gotowe Skrypty, przykłady, dodatki, silniki 3D dla GM
Importowanie modeli 3D Przedstawiam wam mój sposób na bezbłędne importowanie modeli z blendera do GMSa. Importowany model będzie miał poprawną geometrię, informacje o wektorach normalnych wierzchołków i UV mapę. Potrzebne będzie narzędzie GM Model Fix i oczywiście blender. To nie jest tutorial modelowania więc przygotowałem swoje 3 modele, które sobie ściągniecie tutaj. Są to modele Podłogi, ściany i sufitu. Textury pochodzą z pierwszej części Heretic 1. Blender: - ładujemy plik z którymś modelem .blend - przełączamy się w Object Mode [tab] i jeżeli coś jest zaznaczone to odznaczamy wszystko przyciskiem [A] , teraz [PPM] zaznaczamy model. - przechodzimy do File > Export > Wavefront .obj - i zaznaczamy te opcje: - za pomocą kolejnych ustawień można filpnąć lub zeskalować model. Ważne tutaj jest pole UP, oś którą tutaj ustawiasz powinna zgadzać się z UP vectorem zdefiniowanym w ustawieniach perspektywy w twojej grze. UP vector są to 3 ostatnie parametry funkcji d3d_set_projection( xF, yF, zF, xT, yT, zT, UPx, UPy, UPz ); w moim przykładzie ustawiłem go na 0, 0, 1 więc w blenderze w polu UP ustawiam dodatnią oś Z 2. GM Model Fix Za pomocą tego programu przekonwertujesz .obj na GMowy format .d3d - W File otwieramy zapisany z blendera plik .obj - I powinien się pojawić twój model z nałożoną przykładową texturką z tego programu model ściany Moje modele są dobrze zrobione więc się tam pojawią ale gdybyś wczytywał swój i się nie pojawi to są 3 znane mi przyczyny: Model jest zbyt mały Model ma niepoprawne Face Normale. Można je podejrzeć w blenderze w Edit mode w panelu pod przyciskiem [N] ( ustaw skalę bo nie będzie ich widać ) Face Normale muszą być skierowane na zewnątrz ( chyba że robisz model na którego patrzy się od wewnątrz np. model jakiegoś pomieszczenia ) Model nie posiada siatki UV. Jak nie wiesz jak ją zrobić to zapoznaj się z tutorialami blendera. Przy skomplikowanych modelach stworzenie dobrej siatki może być czasochłonne i trudne. - zapisujemy plik File > save to GM model, klikamy ALL 3. Game Maker Studio - Teraz przechodzimy do GMS i dodajemy w included files nasze modele w formacie .d3d. Oraz w sprites textury które są dostępne w paczce z plikami .blend Ja te sprity ładuję jako kolejne subimage, jeśli maja tą samą rozdzielczość. Przy ładowaniu textur najprawdopodobniej będzie trzeba je flipnąć w pionie. -Trzeba jeszcze stworzyć sobie jakiś wygodny system ładowania zasobów ja przeważnie robię to tak: Tworzę nowy room o nazwie ladowanie, ten room zawsze jest pierwszy i w nim mam obiekt który ładuje zasoby w create: GML /// Wczytywanie zasobw gry globalvar gModel, gModelCnt, gTex, gTexCnt; gModelCnt = 3; // ilosc modeli gTexCnt = sprite_get_number(sTex); // ilosc textur gTex[gTexCnt] = 0; // tablica z indexami statycznych textur gModel[gModelCnt] = 0; // tablica z indexami modeli // MODELE for( i = 0; i < gModelCnt; i++; ) { gModel = d3d_model_create(); // inicjowanie } // Wczytywanie zasobów modeli z plików, nazwa musi się zgadać z tym co masz w include files d3d_model_load( gModel[0], "Ceil10x10.d3d" ); d3d_model_load( gModel[1], "Wall10x10.d3d" ); d3d_model_load( gModel[2], "Floor10x10.d3d" ); // TEXTURY for( i = 0; i < gTexCnt; i++; ) { gTex = sprite_get_texture( sTex, i ); // konwersja spritow na textury } room_goto_next(); Gra po załadowaniu modeli i textur do pamięci przejdzie do następnego rooma. Zakładam że masz już działającą kamerę i widok 3D więc nie będę się o tym rozpisywał. Napiszę tylko jak wyświetlić model: GML d3d_model_draw( gModel[0], 0, 0, 0, gTex[0] ); d3d_model_draw( gModel[1], 0, 0, 0, gTex[1] ); d3d_model_draw( gModel[2], 0, 0, 0, gTex[2] ); itd. -
Skoro już blendera masz to załaduj sobie jakiś model, wejdź edit mode [tab] otwórz panel klawiszem [N] i znajdź przyciski normals. Są dwa: Face normal i Vertex normals. Jak się robi model tymi funkcjami d3d_vertex_normal_texture to te tutaj są właśnie Vertex Normalami. Włącz sobie ich podgląd w blenderze i zobacz jak to wygląda. To jest po prostu trójwymiarowy wektor wychodzący z wierzchołków. Jak światło pada w tym samym kierunku ale przeciwnym zwrocie co ten vector "vertex normal" to ten wierzchołek jest oświetlony najmocniej. Z odpowiednim ustawieniem tych vertex normali można stworzyć gładsze lub ostrzejsze cieniowanie modelu. Jak vertex normale będą równoległe do face normala to model będzie miał ostre cieniowanie a nie miękkie. Mała dygresja: Funkcja d3d_set_smooth() konfiguruje światło tak że reaguje albo na face normale albo na vertex. Jak jest d3d_set_smooth(true) to światło będzie gładkie ale pod warunkiem że model nie ma równoległych vertex normali do face normala.
-
Ja też modyfikowałem gierki, np ancient empires 2 zmodyfikowałem tak że zamiast zimy jest teraz lato xD
-
No na pewno strzałka nie powinna być koloru czerwonego. Żółty byłby lepszy.
-
Nie można ustawiać normalnych w funkcji d3d_draw_wall(). Ale możesz zrobić własny model w blenderze z dobrymi wektorami, lub zrobić model składający się z 4 wierzchołków z dostępnych funkcji w GM.
-
Aż dziwne że GM nie sypnął errora.A nie jednak napisał że nie działa
-
Anyway i tak przerobiłem na porządną fizykę bo mi się nudzi. http://www.mediafire.com/download/vuew0z6r...Platformowy.gmz jest pod inną nazwą by ci przypadkiem nie zastąpiło twojej gry jak będziesz otwierać. Pytaj się czego nie rozumiesz to ci wyjaśnię :P
-
Nie zrozumiałeś o co mi chodziło, w sumie to się nie dziwię bo ciężko to wytłumaczyć dlatego najlepiej zobacz ten link co podesłałem. Jak chcesz to mogę ci przerobić tą twoją gierkę na taką fizykę oczywiście bez tych wygibasów ala odbijanie od ściany, chwytanie się za sufit.
-
GML /// wykrywanie pochylni if ( !place_free( x+hspeed, y ) ) { if ( place_free( x+hspeed, y-1 ) ) onslope = 1; else onslope = 0; } else onslope = 0; Umieść ten kod na pierwszym miejscu w step. Ale postać i tak trochę haczy. Ogólnie lepiej jest napisać własną fizykę i wykrywanie kolizji niż męczyć się z tym posysającym wbudowanym w GMa. Tzn nie używać wbudowanych zmiennych hspeed, vspeed, speed, gravitation. Tylko zrobić ruch w pętlach na samych pozycjach x i y postaci. Tutaj jest taki przykład: https://gmclan.org/index.php?plik=181 ale nie jest pod GMS więc bez wprowadzenia paru zmian się go nie odpali. ( zaraz jednak się odpalił lol :D )
-
Patrz do kogo to mówisz Propa tego nie zrozumie skoro przez 2 lata codziennie tyra na tą samą grą :D
-
Nie rozumiem po co ci 2 zmienne od pokazywania punktów.
-
No ale przecież nie chciałeś używać score, tylko global.pkt
-
A może ty tą globalną gdzieś w step resetujesz. Masz np gdzieś global.pkt = 0;
-
To nie wiem, prześlij GMZ to zobaczę co jest nie tak.
-
Wejdź w debug mode i wpisz tam global.pkt i zobacz czy ci się wartość zwiększa po zebraniu.
-
A w jaki sposób wyświetlasz te punkty? Może się dodają ale źle je na ekran rysujesz.
-
nazwy kolorów jak c_black powinny się kolorować na czerwono bo to są stałe. Stałe zawsze są na czerwono zaznaczone ale czemu nie widzi ci nazwy draw_set_color() to nie mam zielonego pojęcia, masz jakiegoś lewego GMa?
-
Platformówka - problem z "teleportacją"
I am Lord odpowiedział(a) na Darkhog temat w Pytania początkujących
Zamiast klocka "Move to Contact" wstawiłem klocek "execute piece of code" a w nim: GML /// Move to contact w górę lub dół w zależności od prędkości pionowej if ( vspeed > 0 ) move_contact_solid( 270, 7 ); else move_contact_solid( 90, 7 ); -
Pomyśl nad zrobieniem zapętlonego ekranu bo mapka jakaś malutka jest i często trzeba się cofać.
-
Platformówka - problem z "teleportacją"
I am Lord odpowiedział(a) na Darkhog temat w Pytania początkujących
Tak zauważyłem to ale tutaj powinno być dobrze. https://forum.gmclan.org/index.php?showtopi...st&p=416415 -
Odwracanie się postaci po naciśnięciu klawisza.
I am Lord odpowiedział(a) na kudlatty temat w Pytania początkujących
Nie widzę błędu jak dla mnie powinno być dobrze z tym odbiciem spritu.