Skocz do zawartości

kordian

Użytkownicy
  • Postów

    21
  • Dołączył

  • Ostatnia wizyta

Treść opublikowana przez kordian

  1. Chętnie bym to zrobił, ale póki co nie wiem jak załadować plik na forum...
  2. Witam, dodałem strzelanie w dwie strony do gry. Kod wygląda następująco: w evencie Key_press GML if (sprite_index == Stand_left) { sprite_index = Shooting_left; attack = instance_create(player.x,player.y,bullet) attack.speed=3; attack.direction=180; } if (sprite_index == Stand_right) { sprite_index = Shooting_right; attack = instance_create(player.x,player.y,bullet) attack.speed=3; attack.direction=360; } Kod pochodzi z http://gmc.yoyogames.com/lofiversion/index.php/t313474.html Problem polega na tym że wyswietlana jest tylko jedna z wielu klatek spritea "Shooting_right/left". ( i to nie zawsze, czasem tylko zrywa animację). Wiem że było sporo podobnych tematów ale mimo wszystko nie mogę nigdzie znaleźć stosownego rozwiązania. Będę wdzięczny za pomoc.
  3. Hej. Niedawno czytałem że dla optymalizacji kodu wskazane jest aby dezaktywować obiekty znajdujące się poza obszarem widzenia. znalazłem kody które można podpiąć pod obiekt widoczny na ekranie: instance_deactivate_region(-10,-10,10+view_wview,10+room_height,false,true) instance_activate_region(-10,-10,10+view_hview,10+room_height,true,true) Zastosowałem pierwszy wariant ( gdy stosuje oba pojawia się error, że zła liczba argumentów by script zadziałał). Okazuje się, że pierwsza linia kodu trwale dezaktywuje obiekty poza obszarem "view in room" zaznaczonym w roomie. Gdy view dochodzi do nich to po prostu ich nie ma. Jaki jest na to sposób? Może jakiś inny specjalnie dla kamerki z projekcją 3d (używam jej w grze, widoki w roomie mam aktywne żeby rozdzielczość i spritey nie ulegały przeskalowaniu gdy kamera przestaje być aktywna). Pozdrawiam :)
  4. if oCharacter.x > 300 and oCharacter.x < 800 and oCharacter.y > 250 and oCharacter.y < 800 //tak samo dla y { obj_cam.mam_sledzic = true; } else obj_cam.mam_sledzic = false; Wspomnę jeszcze tylko że wrzuciłem kod od Ciebie to do drawa Playera1, Adresowałem do kamerki...
  5. Wpisałem to i nawet działa (tylko ptaszki musiałem odwrócić) ale kamera zrywa animacje gdy przechodzi w tryb śledzenia. To wina skokowego środkowania obiektu który zdąża się w tym czasie przesunąć w polu widzenia. Co więcej gdy jest spełniony tylko jeden warunek to kamera przestaje zupełnie śledzić Playera1 ( czyli np skacząc przy ścianie x kamera nie łapie go w kadrze w osi y). Może można by tą projekcję 3d opisać oddzielnie dla każdej z osi? coś w tym stylu: if mam_sledzic_x { x = oCharacter.x; } d3d_set_projection(x,640,x,0,0,0,1); //tutaj nie wiem jak to zapisać, o ile się da dla tej funkcji if mam_sledzic_y { y = oCharacter.y; } d3d_set_projection(y+1,640,y,0,0,0,1);//tak samo ale to chyba i tak nie rozwiąze problemu skokowej animacji... <_<
  6. Działa! Popełniłem głupi błąd ( nie zaadresowałem akcji w evencie destroy oPlayer1 do kamery :jezor: ). Dzięki Wieelkie! :thumbsup: Wciąż tylko nie wiem jak ustawić wartości śledzenia na false w zależności od położenia obiektu. robiłem różne przymiarki, ale bez skutku. Chciał bym mu napisać że gdy Player 1 będzie w odleglości około połowy pola widocznosci kamery od scian rooma ( wszystkich czterech) to kamera ma się zatrzymać. czyli np jeśli room ma rodzielczość 800x 600 a pole widoczności 640x480 to jak oPlayer1 znajdzie się na pozycji rooma x= 320 px kamera ma przestać podążać w lewo za bohaterem (odpowiednio x= 480px, kamera nie podąża w prawo, y=240px do góry,y=360px, w dół itp. ) Chyba że jest na to inny, leprzy sposób...
  7. Dzięki wielkie, teraz wpisałem to jak trzeba... Niestety dalej mam problemy. Kod działa, bo przy false nie wywala mi kamerki do 2d i nie odwraca obrazu ( tak było jak stosowałem wariant z instance_number(oPlayer1) ==0). natomiast pojawia się error funkcji draw ( którego nie było przy wariancie Instant_number). Ustawiałem mam_sledzić= false dla eventu Destroy obiektu oPlayer1, ale bez skutecznie bo kamerka wciąż domaga się współżędnej x. Ponadto nie mogę się doczytać jak sprawić aby współrzędne położenia oPlayer1 w roomie inicjowały kod mam_sledzic = false (tzn. jak to sformuować w GML). Głupol ze mnie ale naprawdę mi zależy na tej kamerce... Jeśli powiesz mi jak to zrobić to będzie super bo już padam z braku snu na twarz :)
  8. Hej. W grze platformowej występują ukośne płaszczyzny po których bohater może chodzić. Kod odpowiedzialny za poruszanie się po nich działa bardzo dobrze ( pod górę ciężko, z górki na pazurki). Problem dotyczy wyświetlania spritea który styka się z nimi tylko jednym pikselem na krawędzi ( zwyczajnie ta funkcja nie obraca spritea). Czy jest jakiś kod żeby sprawić że kąt spritea bohatera zmieni się o odpowiednią wartość tak aby jak najwiekszy obszar jego dolnej płaszczyzny przylegał do podłoża po którym się porusza?
  9. Działa rewelacyjnie, a drzewko katalogowe skróciło się o kilka pięter :) Wielkie dzięki!
  10. Hej To pytanie zadawałem wcześniej w dziale dla początkujących ale nie znalazłem rozwiązania... Jestem początkującym użytkownikiem Game Makera i robię moją pierwszą platformówkę z widokiem z boku Nie jestem programistą, całkowicie zmieniam przede wszystkim grafikę i dźwięk, korzystam z gotowego silnika "mario" Martina Piecyka i modyfikuję go tu i tam :) Ostatnio zapragnąłem aby platformy w grze posiadały głębię 3d. Znalałzem tutorial na you tube w którym jest pokazane jak to zrobić : stworzyłem więc obiektY "obj_cam" i "obj_block" poczym wrzuciłem je do rooma gdzie znajduje się mój "oPlayer1" , czyli postać którą steruję w grze. w Drawie obiektu kamery wpisałem kod: d3d_set_projection(oPlayer1.x+0,oPlayer1.y+1,640,oPlayer1.x,oPlayer1.y,0,0,0,1); Wsyztko chodzi sprawnie z wyjątkiem dwóch rzeczy: 1. kamera zawsze centruje bohatera, tak że gdy dociera do krawędzi rooma ukazany jest nie istniejący obszar background. Jak poinformować kamerę żeby zatrzymała się przy krawędzi ekranu , a potem gdy Player znajdzie się w odpowiedniej odległości znowu weszła w tryb śledzenia. 2. Gdy bohater umiera chcę aby kamera stanęła w miejscu. Śmierć bohatera to w mojej grze oddzielny obiekt. Gdy podpinam pod niego kamerę zachodzi porblem nr 1. Gdy ją wyłączam cały obraz odwraca się do góry nogami. Jest jakiś sposób aby odwrócić współżędne wyświetlania Viewa w trybie 2 d ? Będę ogromnie widzięczny za porady, Jesli uda mi się wystrugać mój projekcik, oczywiście dam znać i zamieszczę stosowne podziękowania w credits :) pozdrawiam
  11. Hej, Zastanawiam się czy można tego kodu użyć, aby powtórzony osiem razy obiekt rozprzestrzeniał się po promieniu koła równomiernie we wszystkie strony? Mam taką postać w grze, która strzela osmioma pociskami po okręgu we wszystkie strony ( od centrum) ale do zrobienia efektu użyłem (zgrozo!) ośmiu takich samych obiektów i kazdemu z nich przypisałem oddzielny kierunek poruszania. Nie sądzę aby było to ekonomiczne, co wiąże się z kolejną wątpliwością... Czy jeśli jeden obiekt występuje w scenie wielokrotnie ( np jakiś coin albo klocek solid) to wydajniej jest przypisywac akcję do niego czy np do postaci sterowanej przez gracza, wystepujacej tylko raz? ) Pytam bo słyszałem na ten temat sprzeczne opinie... Może to problem na oddzielny temat, ale powstał pod wpływem tego, więc piszę tutaj... Pozdrawiam :)
  12. nie całkiem wiem gdzie to wpisać, podpinałem do solid i bohatera na kilka sposobów, ale wygląda na to że nic się nie zmienia. :( Warn za tripleposta gnysek
  13. Nie całkiem wiem jak działa maska, jak się doedukuję to powiem jak poszło :)
  14. Zaznaczałem, ale wygląda na to że kolizje są obliczane wyłącznie na podstawie skryptu.
  15. Hej, w mojej grze platformowej bohater ma szerszą głowę niż tułów. Gdy ustawiam boundary rezultat jest taki, że w zalezności od ustawień granic spritea bohater albo wpija się głową w obiekty które mają być solid ( gdy dopasowuję do nóg) albo lewituje w powietrzu gdy kończy mu się grunt pod nogami ( gdy dopasowuję do głowy) Granice kolizji ustalam za pomocą edytowalnego kodu pisanego w script Character Create Event (Engine nie jest mojego autorstwa, napisał go niejaki Martin Piecyk). edytowalny fragment to: setCollisionBounds(-12,-10,12,36) Czy jest jakiś sposób aby nadać informację że gdy bohater znajdzie się na krawędzi sześcianu solid powinien spaść (albo przechylić się, zmienić spritea itp) ? pozdrawiam :)
  16. O!. No to super :). Dzięki wielkie. Robiłem u siebie test ale zmiast sprawdzić na exe zrobiłem to na projekcie.
  17. Hej, zastanawiam się czy jest jakiś sposób aby fontów używanych w grze nie trzeba było instalować w windowsie, tak aby wyswietlały się na innym komputerze wyłącznie z pliku exe. Czy np. trzeba je wgrać jako bitmapy, albo zakomunikować gm aby pobierał je z jakiegoś wewnętrzengo źródła? Znacie na to jakieś sposoby? pozdrawiam. :)
  18. Jest coraz lepiej. Teraz kamera przynajmniej się zatrzymuje ale niestety obraz odwraca się do góry nogami :) nadal jest problem z granicami planszy. Gdy bohater dociera do granicy po prostu blokuje go niewidzialna bariera a kamerka i tak pokazuje nieistniejący obszar sceny wypełniony kolorem background ( kamera w ogóle nie uwzględnia rozdzialczości rooma tylko to ze bohater musi być w centrum widocznego obszaru.
  19. Wielkie dzięki! hud działa jak należy :). Co do tego umierania to rozumiem, ale wciąż nie wiem jak zrobić aby kamera inteligentnie się zatrzymała gdy widok dotrze do krawędzi rooma. Widok ma rozdzielczość 640x480. Całkowita rozdzielczość mojego pomieszczenia wynosi 800x 600 ale kamera nic sobie z tego nie robi i przekracza rzeczywistą krawędź planszy, pokazuje nieistniejący obszar wypełniając go kolorem background ( śledzi bohatera tak by zawsze był wyśrodkowany wzgledem krawędzi ekranu). Może znasz jakiś kod żeby kamera stanęła po dotarciu do krawędzi rooma? pozdrawiam i dziękuję
  20. Hej. Dzięki za błyskawiczną odpowiedź :) Niestety nie całkiem to rozumiem , bo jak mówiłem z programowania ze mnie noga. Program odpowiada, że jest za mało argumentów aby skrypt zadziałał gdy go wpisuję (x,y,x,y,0,0,0,1). Zrobiłem to więc tak, że do obj_cam wpisałem kod: w create Event chce_sledzic=true; w draw Event if chce_sledzic=true { x = oPlayer1.x; y = oPlayer1.y; } d3d_set_projection(oPlayer1.x+0,oPlayer1.y+1,640,oPlayer1.x,oPlayer1.y,0,0,0,1); Rezultat jest dokładnie taki sam jak poprzednio. Gdy bohater dotyka krawędzi i umiera, wówczas wyskakuje mi komunikat: ERROR in action number 1 of Draw Event for object obj_cam: Error in code at line 9: d3d_set_projection(oPlayer1.x+0,oPlayer1.y+1,640,oPlayer1.x,oPlayer1.y,0,0,0,1); at position 30: Unknown variable x Żeby tego uniknąć próbowałem zmieniać obiekt który śledzi kamera na inny, error znika ale to nie zmienia faktu że kamera albo obejmuje nieistotny obszar sceny albo wogóle nie działa. Chciał bym zrobić coś takiego, żeby kamera wiedziała, że jak widok zbliża się do krawędzi rooma to trzeba się zatrzymać i ruszyć dopiero gdy oPlayer1 (bądź inny obiekt który będę chciał śledzić w grze) oddali się odpowiednio od krawędzi rooma. Kompletnie nie wiem dla jakiego obiektu, w którym evencie i co wpisać :( Ps. Czy znasz może odpowiedź na moje drugie pytanie ( jak w takim wypadku narysować spritea poruszającego się w stałej odległości od krawędzi ekranu)?
  21. Pomocy! Jestem początkującym użytkownikiem Game Makera i robię moją pierwszą platformówkę. Nie jestem programistą, bardziej profesjonalnie zajmuje się grafiką i oprawą dźwiękową, korzystam z gotowego silnika "mario" i modyfikuję go tu i tam :) Ostatnio zapragnąłem aby platformy w grze posiadały głębię 3d. Znalałzem tutorial na you tube w którym jest pokazane jak to zrobić : Oto co z niego zawarłem w grze: stworzyłem obiektY "obj_cam" i "obj_block" poczym wrzuciłem je do rooma gdzie znajduje się mój "oPlayer1" , czyli postać którą steruję w grze. w create obiektu "obj_cam" wpisałem kod: d3d_start() d3d_set_lighting(false); d3d_set_culling(false); d3d_set_perspective(true); draw_set_color(c_white); w Draw tego obiektu wpisałem kod: d3d_set_projection(oPlayer1.x+0,oPlayer1.y+1,640,oPlayer1.x,oPlayer1.y,0,0,0,1); (obiekt ma ustawiony depth na 100) Rezultat jest prawie dobry :) Kamerka śledzi "oPlayer1" a perspektywa "obj_block" (ustawiony depth na 0) zmienia się jak trzeba. Jest jednak problem, bo kamera działa tak , że "oPlayer1" pojawiał się wyśrodkowany nawet gdy kończy się rozdzielczość mojego rooma i widok obejmuje obszar poza granicami ustalonymi dla planszy. Czy jest jakiś kod, który pozwoli mi na zatrzymanie ruchu kamery gdy "oPlayer1" zbliży się do krawędzi rooma ( tak jak to ma miejsce przy stosowaniu klasycznych "views" z game makera) Kolejny problem, który wiąże się z zastosowaniem "obj_cam" to jak narysować sprite'a (np. przedstawiającego życie bochatera) tak aby znajdował się on w stałym położeniu względem krawędzi widocznej sceny (nie rooma!) Będę ogromnie wdzięczny za pomoc. Autora kodu oczywiście umieszczę w ceditach, o ile uda mi się tylko doprowadzić projekt do przyzwoitego stanu, natychmaist dam znać. :) Pozdrawiam
×
×
  • Dodaj nową pozycję...