M@ILOSZ Opublikowano 23 Stycznia 2008 Udostępnij Opublikowano 23 Stycznia 2008 Otórz robie gre w widoku izometrycznym i chce żeby object mógł poruszac sie tylko do góry, dołu na boki i po skosach. Ale on ma iść tam gdzie ja kliknę myszą. I jak by ktoś mógł tojak zrobic ze jak idzie do góry to ma inny sprite niz jak idzie do dołu , w lewo itd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 23 Stycznia 2008 Udostępnij Opublikowano 23 Stycznia 2008 I jak by ktoś mógł tojak zrobic ze jak idzie do góry to ma inny sprite niz jak idzie do dołu , w lewo itd. Ok. tysiąc przykładów. Zreszta nie wiemy, jak masz zrobione chodzenie, czy po x i y, a może vspeed i hspeed, albo może direction i speed? Czyli że idzie tam, gdzie klikniejsz myszą, ale tylko na boki i po skosach? Jest taki przykład - tyle, że tam było tylko na boki - ale powinieneś se poradzić, aby chodził eż po skosie ;-) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
M@ILOSZ Opublikowano 23 Stycznia 2008 Autor Udostępnij Opublikowano 23 Stycznia 2008 obiekt przemieszcza sie do punktu(obiektu) który powstaje gdy klikniemy gdzies mysza. czyli poruszanie sie do punktu edit: Czyli move_towards_point(punkt.x,punkt.y,4) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 23 Stycznia 2008 Udostępnij Opublikowano 23 Stycznia 2008 Niepotrzebnie robisz nowy obiekt. Zrób tak: OBJ_GRACZ GML //CREATE _x = x; _y = y; //STEP if ( mouse_check_button ( mb_left ) ) { _x = mouse_x; _y = mouse_y; speed = 1; } if ( distance_to_point ( _x,_y ) < 5 ) { _x = x; _y = y; speed = 0; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 23 Stycznia 2008 Udostępnij Opublikowano 23 Stycznia 2008 Zrób tak: Jemu nie o to chodzi. Cxhodzi mu o to, że to ma być takie move_towards_point(), tyle, że po siatce - prawo, lewo, góra, dól i przekątne. Takie..... O, wiem. Taki ruch królowej w szachach - czyli jak najprościej za pomocą dwóch ruchów w szachach dojść do danego punktu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Yoda Opublikowano 23 Stycznia 2008 Udostępnij Opublikowano 23 Stycznia 2008 A no to już nie jest takie proste. Zwłaszcza w izometrii... jeżeli chodzi o 4 kierunki to można użyć motion planningu GMa ;) Sam z tego korzystałem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Saus Opublikowano 23 Stycznia 2008 Udostępnij Opublikowano 23 Stycznia 2008 Takie cos jest w przykladzie walka rpg ala tibia pietera :P Wyglada tak: GML var gracz; gracz=instance_nearest(x,y,obj_character); if ( distance_to_object(gracz)<dyst ) { podazaj=true; } else { podazaj=false; } if (podazaj==true) { if (gracz.y>y+63) { if (place_free(x,y+32)) k=dol; else { if (gracz.x>x) k=prawo; else k=lewo; } } if (gracz.y<y-63) { if (place_free(x,y-32)) k=gora; else { if (gracz.x>x) k=prawo; else k=lewo; } } if (gracz.x>x+63) { if (place_free(x+32,y)) k=prawo; else { if (gracz.y>y) k=dol; else k=gora; } } if (gracz.x<x-63) { if (place_free(x-32,y)) k=lewo; else { if (gracz.y>y) k=dol; else k=gora; } } } switch (k) { case gora: if entered { yy -= 32; entered = false; sprite_index=spr_up; k=stoj; } break; case dol: if entered { yy += 32; entered = false; sprite_index=spr_down; k=stoj; } break; case lewo: if entered { xx -= 32; entered = false; sprite_index=spr_left; k=stoj; } break; case prawo: if entered { xx += 32; entered = false; sprite_index=spr_right; k=stoj; } break; } if place_free(xx,yy) { if mp_linear_step(xx,yy,move_speed,false) { entered = true; if (k=stoj) { image_single=0; image_speed=0; } } } else { xx=x; yy=y; } Aha dyst musi byc zdefiniowane w create ale mozna to usunac z tego kodu bo w twoim przypadku zbedne :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 23 Stycznia 2008 Udostępnij Opublikowano 23 Stycznia 2008 Ehh..... nie bedę się teraz męczył, ale jestem pewien, że nie potrzeba aż tak spomplikoawnego skryptu....... Możliwe, że się mylę, ale tak na pierwszy rzut oka to wydaje się nawet proste..... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
RaistlinBlackRobe Opublikowano 23 Stycznia 2008 Udostępnij Opublikowano 23 Stycznia 2008 @saus: przydługawy ten kod Ja proponuję w objekcie gracza w evencie global mouse left: GML if distance_to_point(mouse_x,mouse_y)>=5 {var dir; dir=point_direction(x,y,mouse_x,mouse_y); if (dir>337.5||dir<=22.5) {direction=0; sprite_index=east;}; if (dir>22.5&&dir<=67.5) {direction=45; sprite_index=northeast;}; if (dir>67.5&&dir<=112.5) {direction=90; sprite_index=north;}; if (dir>112.5&&dir<=157.5) {direction=135; sprite_index=northwest;}; if (dir>157.5&&dir<=202.5) {direction=180; sprite_index=west;}; if (dir>202.5&&dir<=247.5) {direction=225; sprite_index=southwest;}; if (dir>247.5&&dir<=292.5) {direction=270; sprite_index=south;}; if (dir>292.5&&dir<=337.5) {direction=315; sprite_index=southeast;}; speed=5} else speed=0; Jak by co to w global left released ma być jescze speed=0;. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi