ZeroXbot Opublikowano 10 Grudnia 2008 Udostępnij Opublikowano 10 Grudnia 2008 Zrobiłem swoja pierwszą funkcję (to_pos). Ma ona za zadanie nakierować pojazd do punktu kliknięcie myszki, ale napotkałem pewien problem (z kodem). Spójrzcie: GML { if(mouse_check_button_pressed(mb_left)) { xx=mouse_x; yy=mouse_y; speed=1; } if(variable_local_exists('xx')) && (variable_local_exists('yy')) { if(distance_to_point(xx,yy)<=2) { speed=0; } if(point_direction(x,y,xx,yy)<direction<=point_direction(x,y,xx,yy)-180) then direction-=2; if(point_direction(x,y,xx,yy)>direction>point_direction(x,y,xx,yy)-180) then direction+=2; image_angle=direction; } } To jest kod tej funkcji, no i czołg zamiast elegancko dojechać, robi kółka, ósemki, sinusoidy (czy cosinusoidy)(w zależności od tego, gdzie nacisnę). Początkowo używałem takiej wersji (zmieniony skrawek kodu) GML if(point_direction(x,y,xx,yy)<direction) then direction-=2; if(point_direction(x,y,xx,yy)>direction) then direction+=2; Było wtedy lepiej (chociaż czsami też "świrował"), ale czemu ten nowy "nie działa"? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 10 Grudnia 2008 Udostępnij Opublikowano 10 Grudnia 2008 winny: GML if(point_direction(x,y,xx,yy)<direction<=point_direction(x,y,xx,yy)-180) then direction-=2; if(point_direction(x,y,xx,yy)>direction>point_direction(x,y,xx,yy)-180) then direction+=2; direction się dodaje a zaraz po tym odejmuje. Na pewno skacze od -2 do 2. ustaw jakiś przedział. np zrób tak: GML dir = point_direction( x , y , xx , yy ) if ( abs( direction - dir ) > 2 ) { if ( direction > dir ) direction -= 2 else direction += 2 } else direction = dir Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 10 Grudnia 2008 Autor Udostępnij Opublikowano 10 Grudnia 2008 Dzięki! Jest o wiele lepiej, ale np. gdy klikne tak na jakieś powiedzmy 92 stopnie w lewo, to on zamiast krecić się w lewo (bo ma bliżej), to się kręci w prawo. :| @EDIT: O i znowu jakoś klikłem i zaczął robić ósemki... oglądałem twój kod (żeby nie było, że wklejam bezmyślnie) i nie wiem czemu tak się dzieje... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 10 Grudnia 2008 Udostępnij Opublikowano 10 Grudnia 2008 bo jak zmienia się kat i stosunek dir < lub > ulega zmianie. odśwież jutro temat albo przypomnij mi na pm to Ci napiszę co by można z tym zrobić ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 10 Grudnia 2008 Udostępnij Opublikowano 10 Grudnia 2008 Ja robiłem przykład rakiety samonaprowadzającej która wybiera krótszy kąt zaraz znajdę może. EDIT: Kurcze chyba nie znajdę bo połowa tematów jest wywalona Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Marek.S Opublikowano 10 Grudnia 2008 Udostępnij Opublikowano 10 Grudnia 2008 to szukaj w koszu =P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 10 Grudnia 2008 Udostępnij Opublikowano 10 Grudnia 2008 O znalazłem ten przykład w uploaderze https://gmclan.org/up539_11_direction.html :P zapomniałem że tam go wsadziłem. Postać ruszamy strzałkami Rakiety nigdy się nie mylą i zawsze wybieraja najbliższy kąt. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ZeroXbot Opublikowano 10 Grudnia 2008 Autor Udostępnij Opublikowano 10 Grudnia 2008 Teraz jest idealnie! Wielkie dzięki wszystkim! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi