David Dark Opublikowano 24 Października 2007 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 :-)
Marek.S Opublikowano 24 Października 2007 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
Yoda Opublikowano 24 Października 2007 Opublikowano 24 Października 2007 draw_sprite_ext(ind,subimg,x,y,xscale,yscale,dir,blend,alpha) ;) @up: szybszy
David Dark Opublikowano 24 Października 2007 Autor 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 ;-)
Pentalinio Opublikowano 24 Października 2007 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.
David Dark Opublikowano 24 Października 2007 Autor 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:
Yoda Opublikowano 24 Października 2007 Opublikowano 24 Października 2007 A po co w step jak step i draw to to samo :P
Marek.S Opublikowano 24 Października 2007 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
David Dark Opublikowano 24 Października 2007 Autor 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)
Marek.S Opublikowano 24 Października 2007 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
David Dark Opublikowano 24 Października 2007 Autor 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
Marek.S Opublikowano 24 Października 2007 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
Filar Społeczności Ranmus Opublikowano 24 Października 2007 Filar Społeczności 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.
Yoda Opublikowano 24 Października 2007 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
Marek.S Opublikowano 24 Października 2007 Opublikowano 24 Października 2007 No fakt :P to może napisz co było by poprawnym rozwiązaniem.
David Dark Opublikowano 24 Października 2007 Autor 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:
Filar Społeczności Ranmus Opublikowano 24 Października 2007 Filar Społeczności 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.
Marek.S Opublikowano 24 Października 2007 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
Tymon Opublikowano 24 Października 2007 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.
David Dark Opublikowano 24 Października 2007 Autor 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.
Marek.S Opublikowano 24 Października 2007 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.
Yoda Opublikowano 24 Października 2007 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
David Dark Opublikowano 25 Października 2007 Autor 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 ;-)
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ę