TO_mek Opublikowano 9 Lutego 2011 Udostępnij Opublikowano 9 Lutego 2011 Witam! Robię menu składające się z kilku guzików ale nie na obiektach a na sprajtach rysowanych przez draw. Jak powinienem wykrywać kolizję klikania na danym guziku? Czy w poniższy sposób czy też jest jakiś prostszy? 1.rysuję kilka guzików za pomocą draw_sprite, guziki to prostokąty o tych samych wymiarach, origin w lewym, górnym rogu (x1,y1). 2.w obiekcie rysowania (bądź dowolnym innym który jest na roomie) w evencie myszy global_left_pressed pobieram wspólrzędne kursora myszki, 3.sprawdzam po kolei czy wartości x,y myszy znajdują się w obrębie narysowanych guzików menu - robię to ręcznie coś na zasadzie jeśli (xmyszki > x1 i < niż x1+szerokość guzika) AND (ymyszki > y1 i < niż y1+wysokosc guzika) to kliknięto guzik A itd. Pytanie czy nie ma może w GM8 gotowej komendy do sprawdzania klikniecia rejonu x1,y1,x1+szerokosc,y1+wysokosc? A może zrobić to inaczej (nie chcę robić osobnych obiektów na poszczególne guziki). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
baca Opublikowano 9 Lutego 2011 Udostępnij Opublikowano 9 Lutego 2011 Jeżeli wciśniesz LPM i pozycja myszki x jest większa od pozycji sprita x i pozycja myszki x jest mniejsza od pozycji sprita x plus jej szerokość ... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 9 Lutego 2011 Udostępnij Opublikowano 9 Lutego 2011 Nie ma takiej funkcji, ale możesz sobie ją napisać samemu: Stwórz nowy skrypt np. mouse_region GML // mouse_region( x1, y1, x2, y2 ) return ( mouse_x > argument0 && mouse_x < argument2 && mouse_y > argument1 && mouse_y < argument3 ); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
TO_mek Opublikowano 9 Lutego 2011 Autor Udostępnij Opublikowano 9 Lutego 2011 Nie ma takiej funkcji, ale możesz sobie ją napisać samemu: Stwórz nowy skrypt np. mouse_region GML // mouse_region( x1, y1, x2, y2 ) return ( mouse_x > argument0 && mouse_x < argument2 && mouse_y > argument1 && mouse_y < argument3 ); Spoko. Chciałem się tylko upewnić że nic takiego nie ma coby nie wywarzać otwartych drzwi (a raczej malutkich drzwiczek ;) ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
candy Opublikowano 9 Lutego 2011 Udostępnij Opublikowano 9 Lutego 2011 Możesz jeszcze zrobić tak. Nazywasz obiekt "guziki" (albo inaczej). Ustawiasz mu sprite, w którym będą wszystkie grafy guzików. Wstawiasz obiekt ten, na przykład, jeden pod drugim co 32 px. W CREATE dajesz kod: GML image_speed=false; image_index=(y-yyyyyy)/32; Pod yyyyyy wstawiasz y obiektu guzik, który jest najwyżej w roomie. Jak widzisz pod image_index będą wpisywane liczy 0,1,2,3... .Potem w evetcie z naciskaniem myszy: GML if(image_index==0) { //akcja 1 } else if(image_index==1) { //akcja 2 } //itd</span> Musisz tylko pamiętać, że ustawienie guzików, względem siebie, musi być liniowe. To znaczy, że muszą być oddalone od siebie o tą samą wartość x albo y, bo inaczej kod nie zadziała. 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ę