David Dark Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 Witam, pracuje nad tym aby na moim bohaterze pojawiala sie bron i zbroja, aktualnie doszlem do tego aby wszystkie sprity ekwipunku rysowal poprostu obiekt bohatera zamiast tworzyc rozne obiekty podazajace jeden za drugim. mam obiekt mojego bohatera a w nim w funkcji draw taki kod: draw_sprite(sprite_index,image_index,x,y); armour = draw_sprite(armourup,0,x,y) oczywscie sprite w indexie wiadomo jak obracac, zmieniac sub image itd. natomiast chodzi mi o to jak wlasnie operowac tym drugim spritem wygenerowanym w zmiennej armour takimi funkcjami jak image_speed image_index itd. Wielkie dzieki za odpowiedz :-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 draw_sprite_ext( sprite_index,image_index,x,y,image_xscale, image_yscale,image_angle, image_blend,image_alpha); NP: https://gmclan.org/up1558_11_mieczyk.html @ down: loser :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 draw_sprite_ext(ind,subimg,x,y,xscale,yscale,dir,blend,alpha) ;) @up: szybszy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
David Dark Opublikowano 24 Października 2007 Autor Udostępnij Opublikowano 24 Października 2007 draw_sprite_ext(ind,subimg,x,y,xscale,yscale,dir,blend,alpha) ;) @up: szybszy aha to jednak miales racje ze bez tego sie nie obejdzie, dzieki Marek.S dzieki za pomoc ;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pentalinio Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 I tu Mark Overmars popełnił błąd. Niemal wszystkie wbudowane zmienne lokalne są zbędne. Są funkcje typu draw_sprite_ext(), draw_set_alpha() i inne. Moim zdaniem brak owych zmiennych odciążyło by nieco GMa, a początkujący i, nawet ci "średni" nie nabieraliby złych nawyków. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
David Dark Opublikowano 24 Października 2007 Autor Udostępnij Opublikowano 24 Października 2007 aha jeszcze jedno bo cos jest dla mnie niejasne draw_sprite_ext(ind,subimg,x,y,xscale,yscale,dir,blend,alpha) jak na sprite stworzony ta funcja zadzialac funkcja image_speed albo zmienic tej konkretnej sub image lub index w evencie STEP. :helpsmilie: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 A po co w step jak step i draw to to samo :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 podstaw za subimage zmienną którą będziesz zmieniał wedle uznania np na alarmach :P pssss: armour = draw_sprite(armourup,0,x,y) nie wiedziałem że da się sprawdzać id rysowanych obiektów Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
David Dark Opublikowano 24 Października 2007 Autor Udostępnij Opublikowano 24 Października 2007 ok ale mam w stepie caly kod poruszania sie na switchach, i dlatego chcialem to tam wpisac wszystko zebym mial w jednym miejscu, chodzi mi o to zeby to bylo synchronizowane, bo obiekt bohatera jest caly ja tylko nakladam na niego sprity zbroji czy broni czy helmu. Chodzi o to ze jesli postac idzie w jakims kierunku to wszystkie sprity poruszaja(i obracaja) sie w tej samej odpowiedniej szybkosci. sprite w indexie wykona animacje ale zbroja juz nie. do tego potrzebuje image_speed(tak mi sie wydaje) kod poruszania jest z przykladu pitera6 wyglada on tak: case vk_up: if global.entered { yy -= global.grid; global.entered = false; sprite_index=spriteup; image_speed=0.2; } jak ma zrobic zeby wszystkie sprity poruszaly sie rownoczesnie wtedy kiedy wykonuje ruch(chodzi o animacje) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 LOL a jednak działa :o sprite0.image_speed=5 // xD Edit: Sory a jednak można drawom sprawdzać id ki :D twoim sposobem: dd=draw_sprite(...) dd.image_speed=5 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
David Dark Opublikowano 24 Października 2007 Autor Udostępnij Opublikowano 24 Października 2007 LOL a jednak działa :o sprite0.image_speed=5 // xD Edit: Sory a jednak można drawom sprawdzać id ki :D twoim sposobem: dd=draw_sprite(...) dd.image_speed=5 :thumbsup: jeszcze jeden problem - nie dziala: dd.sprite_index = sprite; a jest mi to potrzebne np. przy zmianie kierunków. to dobrze napisany kod czy cos robie zle? 0.o Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 draw_sprite_ext(zmienna,subimg,x,y,xscale,yscale,dir,blend,alpha) zmienna=spr_ale_fajnie :) albo lepiej zmieniaj image_angle bądź x i yscale :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 24 Października 2007 Filar Społeczności Udostępnij Opublikowano 24 Października 2007 Tylu błędnych wypowiedzi w jednym temacie już dawno nie widziałem. ;) natomiast chodzi mi o to jak wlasnie operowac tym drugim spritem wygenerowanym w zmiennej armour takimi funkcjami jak image_speed image_index itd. Drawy nic nie generują, a już na pewno nie sprity. Coś Ci się pomyliło. Tak wynika i z moich testów i z dokumentacji. Gdy funkcja nie zwraca nic konkretnego, to wtedy zmienna przybiera wartość domyślną czyli 0. Zmienne sprite_index, image_index, image_speed to zmienne obiektu, a nie sprite'a. Jeżeli ręcznie rysujesz sprite'y, to sam musisz zadbać o obsługę wyświetlania kolejnych klatek animacji. Zrób tak jak napisał Marek.S w swoim pierwszym poście w tym temacie czyli utwórz nowe zmienne i manipuluj nimi ręcznie. A po co w step jak step i draw to to samo tongue2.gifTo nie to samo. Odsyłam do dokumentacji. Sory a jednak można drawom sprawdzać id ki biggrin.gifNie można. W tym przypadku zostanie przypisana wartość 0, co GM zinterpretuje jako indeks typu obiektu. W takim przypadku jeżeli obiekt "aaa" ma indeks 0 w game makerze, to zmieniasz image_speed wszystkim instancjom tego obiektu. Dokumentacja -> GML -> Addressing variables in other instances. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 A po co w step jak step i draw to to samo tongue2.gif To nie to samo. Odsyłam do dokumentacji. Wiem że nie do końca to samo - draw jest coś jka begin step czy coś... nie ważne - chodzi mi o to że draw jest z rodziny 'stepowatych' czyli kod ze stepa można tam śmiało walnąć :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 No fakt :P to może napisz co było by poprawnym rozwiązaniem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
David Dark Opublikowano 24 Października 2007 Autor Udostępnij Opublikowano 24 Października 2007 No fakt :P to może napisz co było by poprawnym rozwiązaniem. juz mam np. create obrazek = sprite animacja = 0; step obrazek = inny_sprite //jesli musze go zmienic animacja = -2 //rozpoczyna animacje draw draw_sprite_ext(obrazek,animacja,x,y,1,1,0,image_blend,image_alpha) i dziala jak nalezy. Dzieki wszystkim za pomoc :thumbsup: Po 3 godzinach meczenia tego wkoncu sukces czas na :sleep1: Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 24 Października 2007 Filar Społeczności Udostępnij Opublikowano 24 Października 2007 @Yoda: Ale na odwrót już nie i wtedy trzeba stosować surface'y. @Marek.S: Hmmm... Create oraz przy każdej zmianie sprite'a zbroi: armor_sprite_index = nazwa_sprita; armor_sprite_number = sprite_get_number( armor_sprite_index ); armor_image_index = 0; armor_image_speed = 0.5; draw: armor_image_index += armor_image_speed; if ( armor_image_index > sprite_image_number ) armor_image_index = 0; draw_sprite( armor_sprite_index, armor_image_index, x, y ); I dzięki temu mamy zasymulowane armor_sprite_index, armor_image_index, armor_image_speed. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 Fajnie to to już ci pisałem na początku, ale jak zamierzasz zmienić prędkość animacji ? Edit: Woo... Nieźle ;D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 Draw != Step. Ano dlatego, że draw jest wykonywany N razy, a gdzie N ilość viewów, lub 1 gdy są wyłączone. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
David Dark Opublikowano 24 Października 2007 Autor Udostępnij Opublikowano 24 Października 2007 mam cos takiego: switch (keyboard_key) { case vk_up: if global.entered { yy -= global.grid; global.entered = false; sprite_index=spriteup; image_speed=0.2; armour = armourup animation = -2; } image_speed zmienia szybkosc animacji, armour zmienia sprite zbroji na odpowiedni kierunek. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 image_speed=0.2; ale przecież tak zmienisz speed do wszystkich rysowanych spritów ... (według tego co pisze Ranma) Nie można. W tym przypadku zostanie przypisana wartość 0, co GM zinterpretuje jako indeks typu obiektu. W takim przypadku jeżeli obiekt "aaa" ma indeks 0 w game makerze, to zmieniasz image_speed wszystkim instancjom tego obiektu. Dokumentacja -> GML -> Addressing variables in other instances. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 24 Października 2007 Udostępnij Opublikowano 24 Października 2007 a gdzie N ilość viewów :o to dlatego w Islandzie jak włączę drugi view to mi sie szybkość gry zwiększa :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
David Dark Opublikowano 25 Października 2007 Autor Udostępnij Opublikowano 25 Października 2007 ale przecież tak zmienisz speed do wszystkich rysowanych spritów ... (według tego co pisze Ranma) no wlasnie! one musza bys synchronizowane, wszystkie sprity musza poruszac sie w tym samym speedzie :-) i wszystko mi dziala jak nalezy ;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie 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ę poniżej.
Zaloguj się