Prencik Opublikowano 23 Kwietnia 2017 Udostępnij Opublikowano 23 Kwietnia 2017 Witam, w stepie mam taki kod GML if mouse_x>x and global.przycisk=1 { if position_empty (x-225,y) and x-225>=450 { action_move_to(x-225,y) }} if mouse_x<x and global.przycisk=1 { if position_empty (x+225,y) and x+225<=3150 { action_move_to(x+225,y) }} i chce żeby ów obiekt przeniósł się tylko raz o te 225 w daną stronę. Jednak x się cały czas zmienia przez co obiekt ciągle przeskakuje i wychodzi z tego ruch. Moje pytanie brzmi jak go zatrzymać? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Czołg Krymski Opublikowano 23 Kwietnia 2017 Filar Społeczności Udostępnij Opublikowano 23 Kwietnia 2017 Przy wykonywaniu przeskoku ustaw by global.przycisk=0, bo najwyraźniej sie nie wyłącza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Tylko problem w tym, że zmienna global.przycisk nie miała zatrzymywać tego stepu. Global.przycisk = 1 gdy powiedzmy w uproszczeniu jest naciśnięty lewy przycisk myszki. Chciałem by myszka kiedy jest naciśnięta i jest po lewej stronie obiektu przesunął się w prawo, a gdy jest po prawej żeby przesunął się w lewo ( i to podczas jednego przytrzymania myszy). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Tak, tylko że Ty aktywujesz global.przycisk = 1 na naciśnięciu i już nie wyłączasz tej zmiennej, dlatego jest ciągły ruch. Musisz gdzieś wyłączyć tę zmienną. Jeżeli to zmienna do wielu zastosowań zrób to np. na końcu stepu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Ta zmienna się wyłącza, tylko w innym evencie. Próbowałem do tego kodu dodać inną zmienną, która by zatrzymywała ten ruch, ale wtedy niestety podczas jednego przytrzymania myszki mogłem przesunąć obiekt tylko w jedną stronę na której był kursor . Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 GML if mouse_x>x and global.przycisk=1 { if position_empty (x-225,y) and x-225>=450 NewX = x-255; }} if mouse_x<x and global.przycisk=1 { if position_empty (x+225,y) and x+225<=3150 { NewX = x+255; }} action_move_to(NewX, y); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Niestety ale nie działa <_< Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Chcesz uzyskać płynne przejście z kratki na kratkę? Czy ma to być taki natychmiastowy przeskok ale by kolejny był możliwy dopiero po odciśnięciu przycisku myszki? A może byś chciał przeskok w jakiś odstępach czasowych podczas trzymania? (to by było najłatwiejsze) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Było by nawet lepiej gdyby tak było ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Tzn? Zmienną NewX do create musisz dodać, myślałem że się domyślisz ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Wiem :D dodałem, i tak nic z tego. Wcześniej już kombinowałem z tego typu zmienną... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 GML if mouse_x>x and global.przycisk=1 { if position_empty (x-225,y) and x-225>=450 { NewX = x-255; }} if mouse_x<x and global.przycisk=1 { if position_empty (x+225,y) and x+225<=3150 { NewX = x+255; }} action_move_to(NewX, y); Klamerki zabrakło. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Klamerki też poprawiłem :D :D :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 To może po prostu napisz co nie działa, a nie się droczysz jak baba z okresem Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 GML /// Create newX = x; /// Step if ( round(x-newX) != 0 ) { x = lerp(x, newX, 0.5); } else { x = newX; if mouse_x>x and global.przycisk=1 { if position_empty (x-225,y) and x-225>=450 { newX = x-225; } } if mouse_x<x and global.przycisk=1 { if position_empty (x+225,y) and x+225<=3150 { newX = x+225; } } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 A więc ediepl twój kod działa dosłownie tak samo jak ten mój na samej górze, czyli obiekt przeskakuje z pozycji x=450 gdy myszka jest po lewej stronie do pozycji x=3150 gdy myszka jest po prawej stronie. I am Lord po wpisaniu twojego kodu obiekty robią dokładnie to samo tylko co 225 się na chwilkę zatrzymują Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 I am Lord po wpisaniu twojego kodu obiekty robią dokładnie to samo tylko co 225 się na chwilkę zatrzymują No i tak miało być, płynnie miały się poruszać co 225. Więc nie rozumiem w takim razie co chcesz osiągnąć. Prędkość możesz jeszcze zmienić zmieniając 0.5 na mniej w lerp() Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Chciałem żeby przebyły ten dystans i się zatrzymały, a przechodząc kursorem na drugą stronę obiektu by znów się przesunął o 225 i zatrzymał tylko w przeciwną stronę (wrócił na swoje poprzednie miejsce). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 więc wyłącz global.przycisk Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Nawet jeżeli wyłączę global.przycisk obiekt przesunie się w jedną stronę (np. w lewo o 225 i się zatrzyma) ale po przeniesieniu naciśniętej myszki na drugą stronę obiektu obiekt nie przesunie się w drugą stronę (np. w prawo o 225 ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Więc błąd masz gdzieś indziej, ja bym sprawdził czy position empty nie blokuje ci tego w jakiej sytuacji Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Pręcik Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 Trochę się namordowałem, ale w końcu mi się udało :D GML if ( round(x-newX) != 0 ) { x = lerp(x, newX, 0.3); if newX>x { j-=1 } if newX<x { j+=1 } } else { x = newX; if mouse_x>x and global.przycisk=1 and j<1 { if position_empty (x-450,y) and x-225>=450 { newX = x-225; j+=1 } } if mouse_x<x and global.przycisk=1 and j>-1 { if position_empty (x+450,y) and x+225<=3150 { newX = x+225; j-=1 } } } if global.przycisk=0 { j=0 } Wielkie dzięki za pomoc Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 27 Kwietnia 2017 Udostępnij Opublikowano 27 Kwietnia 2017 To GML if newX>x { j-=1 } if newX<x { j+=1 } zamień na: GML j += sign(x-newX); działanie takie samo tylko wydajniej. 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ę