SimianVirus8 Opublikowano 10 Lipca 2015 Udostępnij Opublikowano 10 Lipca 2015 Witam. Problem główny: Mam sprite, który jest animacją złożoną z 60 klatek. Chcę ją wywołać dzięki komendzie draw_[...]. Niestety gdy używam draw_sprite to pozostaje na subimg=1 i się nie rusza. Moje pytanie jest następujące. Jakiej komendy użyć aby narysować sprite wraz z animacją. Najmądrzejszym moim posunięciem [według mnie] było GML draw_sprite(sKabanLogo,1/60,self.x-230,self.y) no ale koniec końców, nie zadziałało. Pytania mnie nurtujące od dawna: 1.Czy używając komendy "instance_destroy()" w step, można zdefiniować obiekt, coś w deseń "instance_destroy(other)" ? 2.Czy istnieje komenda odpowiadająca bloczkowi "Mouse enter" i "Mouse leave"? Ponieważ za każdym razem kiedy chce użyć ją w step, musze zdefiniować własną zmienną "mouseenter = 1" i "mouseenter = 0" 3.Czy istnieje komenda, odwołująca się do myszki np. "Left pressed", która będzię działać dopiero gdy myszka jest na obiekcie, a nie globalnie? Gdy używam mb_left, bądź mouse_check_button_pressed to działa ona globalnie, nawet poza obiektem. 4.Czy istnieje komenda, odpowiadająca bloczkowi "Animation End", którą będę mógł wykorzystać w Step ? Z góry dziękuje za poświęcony czas :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 10 Lipca 2015 Udostępnij Opublikowano 10 Lipca 2015 Główny: W image_index wpisałeś 1/60 a nie jedną na 60 klatek. Zrób se zmienną pomocniczą, która będzie sie cały czas zwiększać i daj ją tam, gdzie ma 1/60 1) Nie można. Możesz użyć takiego myku: GML with(other) instance_destroy(); 3) Z tego co wiem to nie ma. 4) Nie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus8 Opublikowano 10 Lipca 2015 Autor Udostępnij Opublikowano 10 Lipca 2015 Dzięki. Po 30-40 minutowym wytężeniu mózgu osiągnąłem pożądany efekt. Zrobiłem tak ja radziłeś, czyli własna zmienna. Jeśli ktoś by miał też z tym kłopot, to prosze bardzo. GML if cooldown=0 { anim360 += 1 // dodawanie po jednej klatce cooldown=1 // szybkosc obracania } cooldown=max(0,cooldown-1) // Magiczna komenda Threefa, działa i tak ma byc if anim360 = 60 { // Gdy osiagnie 60 klatke zacznij od nowa anim360 = 0 } if mouseenter = 0 { // wyzerowanie animacji anim360 = 0 } Jeszcze raz dzięki za pomoc :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 11 Lipca 2015 Udostępnij Opublikowano 11 Lipca 2015 3. DO tego służy event "Mouse>Left Pressed"(który działa tylko wewnątrz maski obiektu, w przeciwności do "Mouse>Global Mouse>Left Pressed") Alternatywnie minimum matmy. Jezeli masz origin sprite'a na [0,0] to: GML if mouse_check_button_pressed(mb_left) && mouse_x >= x && mouse_x <= x+sprite_width && mouse_y >= y && mouse_y <= y+sprite_height { //blabla } Edit: Tutaj ten sam kod co wyzej ale w wersji uniwersalnej, bioraca poprawke na maske kolizji i origin. Poczatkowo nie chcialem tego pisac zeby nie wydawalo sie zbyt skomplikowane, ale what the hell..: GML if mouse_check_button_pressed(mb_left) && mouse_x >= x-sprite_get_xoffset(sprite_index)+sprite_get_bbox_left(sprite_index) && mouse_x <= x-sprite_get_xoffset(sprite_index)+sprite_get_bbox_right(sprite_index) && mouse_y >= y-sprite_get_yoffset(sprite_index)+sprite_get_bbox_top(sprite_index) && mouse_y <= y-sprite_get_yoffset(sprite_index)+sprite_get_bbox_bottom(sprite_index) { //blabla } Alternatywnie dla skrócenia kodu walnij to sprawdzenie do oddzielnej funkcji nazwanej np. scr_check_click GML (scrcheckclick) ///scr_check_click() return (mouse_x >= x-sprite_get_xoffset(sprite_index)+sprite_get_bbox_left(sprite_index) && mouse_x <= x-sprite_get_xoffset(sprite_index)+sprite_get_bbox_right(sprite_index) && mouse_y >= y-sprite_get_yoffset(sprite_index)+sprite_get_bbox_top(sprite_index) && mouse_y <= y-sprite_get_yoffset(sprite_index)+sprite_get_bbox_bottom(sprite_index)); Wtedy kazdy kod w kazdym obiekcie maleje do: GML if mouse_check_button_pressed(mb_left) && scr_check_click() { //Blablabla } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 11 Lipca 2015 Udostępnij Opublikowano 11 Lipca 2015 No to nie pozostało mi nic innego niż Animation End? Możesz porównać wartość zmiennej image_index do image_number. W dokumentacji pod image_number masz przykład. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus8 Opublikowano 11 Lipca 2015 Autor Udostępnij Opublikowano 11 Lipca 2015 Dzięki za wyjaśnienia, z pewnością ułatwi mi to pare rzeczy :) 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ę