Bobkowy Opublikowano 31 Stycznia 2013 Udostępnij Opublikowano 31 Stycznia 2013 Mam za zadanie zrobić prostą grę na androida z wykorzystaniem czujnika ruchu. Sterowanie zrobiłem łopatologiczne, niestety obiekt porusza się prawidłowo tylko w osi x natomiast jeśli chce poruszać się w osi y os x musi być wyzerowana czyli idealnie poziomo co jest prawie niemożliwe. Wygląda to tak: Prosiłbym o nakierowanie co jest źle lub wskazówkę jak można to zrobić porządnie. Szukałem już na różnych stronach o wykorzystaniu funkcji YoYo_GetTiltX() lecz jedyne co udało mi się odnaleźć to zmiana orientacji obrazu z poziomego na pionowy i odwrotnie . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 1 Lutego 2013 Udostępnij Opublikowano 1 Lutego 2013 Co to za wersja programu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lutego 2013 Administratorzy Udostępnij Opublikowano 1 Lutego 2013 Wygląda jak HTML5, ale tam nie było chyba Androida.... a funkcje YoYo_* były wywalone praktycznie na równi z premierą prawie rok temu... obecnie nie działają. Używasz jakiegoś pirata czy coś? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bobkowy Opublikowano 1 Lutego 2013 Autor Udostępnij Opublikowano 1 Lutego 2013 Wersja to Game Maker Studio 1.1 MiPS ściągnięta przedwczoraj ze stronki producenta więc żaden pirat :) Po wejściu w zakładkę scripts -> show build in functions wyświetliło mi ponad 20 funkcji YoYo_* Oczywiście mam darmową wersję bo nie opłaca mi się kupować pro żeby zrobić jedna gierkę na zaliczenie która i tak nie pójdzie na sprzedaż. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lutego 2013 Administratorzy Udostępnij Opublikowano 1 Lutego 2013 Dlaczego akurat MIPS? Nie mniej, prawidłowe funkcje to: http://gnysek.github.com/gmstudiodocs/5pic...get_tilt_x.html device_get_tilt_x() device_get_tilt_y() device_get_tilt_z() Sprawdź je w dokumentacji załączonej do programu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bobkowy Opublikowano 1 Lutego 2013 Autor Udostępnij Opublikowano 1 Lutego 2013 Po zmianie tych funkcji gra niestety działa identycznie dalej mogę poruszać się bezproblemowo tylko w jednej osi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lutego 2013 Administratorzy Udostępnij Opublikowano 1 Lutego 2013 Musisz przyjąć, że pozycja w jakiej tablet się znajduje w momencie odpalenia gry to pozycja wyjściowa i teraz względem niej sprawdzać odchył. Do tego jakiś margines wg. którego się nie rusza. Nalezy też pamiętać, że: w pozycji poziomej: lewo-prawo: Y, góra-dół: Z w pozycji pionowej: lewo-prawo: X, góra-dół: Z (co zresztą wynika z obrazków w dokumentacji) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bobkowy Opublikowano 1 Lutego 2013 Autor Udostępnij Opublikowano 1 Lutego 2013 Widzę że nie rozumiesz o co mi chodzi. Jeśli dam tylko odczytywanie pozycji z osi x to w osi x porusza się idealnie, jeśli w osi y to znowu porusza się idealnie ale jeśli dam zczytywanie pozycji w obu osiach jednocześnie to tylko jedna oś działa dobrze a druga już nie. Obiekt zaczyna drżeć i muszę telefon trzymać idealnie pomiędzy górą a dołem żeby w danej osi funkcja zwracała 0 oraz przechylony w któryś bok żeby obiekt poruszał się w daną stronę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lutego 2013 Administratorzy Udostępnij Opublikowano 1 Lutego 2013 No cóż, nakazujesz iść postaci na raz w dwa różne kierunki... są dwie opcje: a) wyliczasz średnią pomiędzy kierunkami i idziesz na skos b ) zwiększasz margines przechylenia tabletu (martwą strefę) w kodzie i pozwalasz iść tylko w jedną stronę, stosując odpowiednio if/else zależnie czy bardziej jesteś wychylony w poziomie czy w pionie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bobkowy Opublikowano 1 Lutego 2013 Autor Udostępnij Opublikowano 1 Lutego 2013 Opcja a odpada ponieważ gra to labirynt więc raczej opcja b ;) Tylko że nie mam bardzo pomysłu jak to wykonać :unsure: Wiem że muszę użyć 2 zmiennych które będą incrementowane o wartość device_get_tilt_*() czyli -1,0,1 w podanym przeze mnie zakresie. Tylko gdzie muszę umieścić taki skrypt ? Wiem że są 3 możliwe miejsca 1 to ogólny skrypt programu w menu po lewej, 2 to skrypt pokoju ale to odpada bo nie będę do każdego pokoju wklejał tych samych skryptów oraz 3 to skrypt który można umieścić nad blokami w obiekcie. Którą opcję lepiej wybrać 1 czy 3? Następne pytanie to zmienne: mogę użyć jakichś wbudowanych czy sam muszę jakieś zadeklarować? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lutego 2013 Administratorzy Udostępnij Opublikowano 1 Lutego 2013 GML //create /// zakładam poziome ułożenie nachylenie = device_get_tilt_z(); martwaStrefa = 0.3; GML //step if (abs(device_get_tilt_y()) > martwaStrefa) { // poziomo speed = 2; direction = -180 * sign(device_get_tilt_y()); } else if (abs(device_get_tilt_z() - nachylenie) > martwaStrefa) { // pionowo speed = 2; direction = 90 * sign(device_get_tilt_z()); } jakoś tak chyba, może przy kierunku trzeba zmienić znaki na -, sprawdź Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bobkowy Opublikowano 1 Lutego 2013 Autor Udostępnij Opublikowano 1 Lutego 2013 Wkleiłem to co napisałeś wywaliłem moją łopatologię i obiekt porusza się tylko do góry i w w lewo aż do krawędzi i potem brak jakiegokolwiek odzewu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lutego 2013 Administratorzy Udostępnij Opublikowano 1 Lutego 2013 Spróbuję zerknąć na to wieczorem w domu, bo pisałem z głowy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bobkowy Opublikowano 1 Lutego 2013 Autor Udostępnij Opublikowano 1 Lutego 2013 Po małych modyfikacjach wszystko chodzi idealnie :) Dzięki wielkie za pomoc. Wklejam kod dla potomnych if (abs(device_get_tilt_y()) > martwaStrefa) { // poziomo speed = 2; direction =90 - (90 * sign(device_get_tilt_y())); } else if (abs(device_get_tilt_x()) > martwaStrefa) { // pionowo speed = 2; direction = -90 * sign(device_get_tilt_x()); } Mam jeszcze jeden problem otóż jak dam kompiluj to aplikacja wyświetla się normalnie na moim telefonie natomiast jak dam create application to wyświetla mi 2 ostrzeżenia [javac] Note: Some input files use or override a deprecated API. [javac] Note: Recompile with -Xlint:deprecation for details. Kompilacja tra około 2 minut daje wynik success zaczyna ładować na telefon i od razu dostaję komunikat aplikacja została zatrzymana Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 2 Lutego 2013 Administratorzy Udostępnij Opublikowano 2 Lutego 2013 Hm, to może być zła wersja Javy, może brak czegoś z Android SDK - ciężko stwierdzić, może jakiś niezgłoszony bug. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bobkowy Opublikowano 2 Lutego 2013 Autor Udostępnij Opublikowano 2 Lutego 2013 Wydaje mi się że problem wynika z tego że mam wersję GameMaker Studio: MiPS i w ustawieniach aplikacji w zakładce Android nie mogę zaznaczyć architektur Armv5 Armv7 i x86. 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ę