SKiD Opublikowano 27 Sierpnia 2011 Udostępnij Opublikowano 27 Sierpnia 2011 Witam, próbuję ulepszyć system drużynowy w mojej grze. Jak na razie mam członka drużyny który podąża za graczem gdy ten się zbytnio oddali. I jeśli wróg jest w polu rażenia strzela (nie za dobrze to wygląda). Chodzi o to że podczas rozgrywki członek drużyny zablokuje gracza, bo nie cofa się do tyłu. Jeśli gracz wejdzie w alejkę bez wyjścia, trzeba restartować grę bo nic innego się nie da zrobić... Więc chciałbym zrobić tego członka drużyny żeby się cofał na wolne pole jeśli gracz jest za blisko. Tutaj macie kody tego co jak na razie zakodowałem. script_jack_movement GML if distance_to_object(obj_player_parent)>45 { image_angle=direction mp_potential_step(obj_player_parent.x,obj_player_parent.y,global.WSN,0) } else { image_angle=point_direction(x,y,obj_player_parent.x,obj_player_parent.y) } script_jack_shoot GML if instance_exists(obj_zombie_parent) if distance_to_object(obj_zombie_parent)<=75 { image_angle = point_direction(x,y,instance_nearest(x,y,obj_zombie_parent).x,instance_nearest(x,y,obj_zombie_parent).y) if global.jackshotgunbullets>2 { global.jackshotgunbullets=0 shoot=true alarm[0]=15 sound_play(sound_shot) } } A tutaj info o obiekcie: Information about object: obj_jack_shotgun Sprite: spr_jack_shotgun Solid: true Visible: true Depth: 3 Persistent: false Parent: Mask: spr_player_parent Create Event: execute code: global.jackshotgunbullets=3 shoot=false execute code: if !instance_exists(obj_status_hud) and !instance_exists(obj_status_hud_hiding) and !instance_exists(obj_status_hud_hid) { instance_create(x,y,obj_status_hud) } execute code: if !instance_exists(obj_jack_controller) { instance_create(x,y,obj_jack_controller) } Alarm Event for alarm 0: execute code: global.jackshotgunbullets=3 shoot=false Alarm Event for alarm 1: set the sprite to spr_jack_shotgun with subimage 0 and speed 1 Step Event: execute script script_jack_movement with arguments (0,0,0,0,0) execute script script_jack_shoot with arguments (0,0,0,0,0) if shoot is equal to true set variable shoot to false create instance of object obj_jack_bullet at position (x,y-4) with speed 44 in direction image_angle create instance of object obj_jack_bullet at position (x,y) with speed 44 in direction image_angle create instance of object obj_jack_bullet at position (x,y+4) with speed 44 in direction image_angle create instance of object obj_shotgun_shot_effect at position (x,y) with speed 0 in direction image_angle create instance of object obj_bullet_shell at position (x,y) with speed 0 in direction image_angle Collision Event with object obj_zombie_parent: set the sprite to spr_jack_hit with subimage 0 and speed 1 set Alarm 1 to 4 Z góry dzięki! Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 27 Sierpnia 2011 Udostępnij Opublikowano 27 Sierpnia 2011 Może po prostu, jak są za blisko to kolega odwraca się w tym samym kierunku i idzie z takim samym tempem jak bohater. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 27 Sierpnia 2011 Autor Udostępnij Opublikowano 27 Sierpnia 2011 Tylko właśnie nie wiem jak to zrobić ... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 27 Sierpnia 2011 Udostępnij Opublikowano 27 Sierpnia 2011 Podaj kod na poruszanie bohatera. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 27 Sierpnia 2011 Autor Udostępnij Opublikowano 27 Sierpnia 2011 Jest tego o wiele za dużo :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 27 Sierpnia 2011 Udostępnij Opublikowano 27 Sierpnia 2011 A co sterujesz nim myślami???Wyślij plik. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 27 Sierpnia 2011 Autor Udostępnij Opublikowano 27 Sierpnia 2011 Zapewne chcecie sprawdzić jak szybko się porusza. Chodzi o to że szybkość gracza jest zależna od jego lvl'a. Przykro mi ale pliku .gmk nie wyśle ponieważ nie jestem na komputerze który zawiera ten plik. Gracz porusza się używając funkcji place_empty Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 27 Sierpnia 2011 Udostępnij Opublikowano 27 Sierpnia 2011 Przetrzymujesz w jakiejś zmiennej o ile ma się poruszyć? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 27 Sierpnia 2011 Autor Udostępnij Opublikowano 27 Sierpnia 2011 tak, global.WSN - nazwa zmiennej (skrót dokładniej) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 28 Sierpnia 2011 Udostępnij Opublikowano 28 Sierpnia 2011 GML (scriptjackmovement) if distance_to_object(obj_player_parent)>45 { image_angle=direction mp_potential_step(obj_player_parent.x,obj_player_parent.y,global.WSN,0) } else { image_angle=obj_player_parent.image_angle if place_free(lenghdir_x(global.WSN,image_angle),lenghdir_y(global.WSN,image_angle)) { x=lenghdir_x(global.WSN,image_angle) y=lenghdir_y(global.WSN,image_angle) } } Spróbuj Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 28 Sierpnia 2011 Udostępnij Opublikowano 28 Sierpnia 2011 GML if place_free(lenghdir_x(global.WSN,image_angle),lenghdir_y(global.WSN,image_angle)) { x=lenghdir_x(global.WSN,image_angle) y=lenghdir_y(global.WSN,image_angle) } Karygodny błąd. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 28 Sierpnia 2011 Udostępnij Opublikowano 28 Sierpnia 2011 Czemu? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 28 Sierpnia 2011 Udostępnij Opublikowano 28 Sierpnia 2011 Gdyż powinno być tak: GML if place_free(x+lengthdir_x(global.WSN,image_angle),y+lengthdir_y(global.WSN,image_angle)) { x+=lengthdir_x(global.WSN,image_angle) y+=lengthdir_y(global.WSN,image_angle) } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 28 Sierpnia 2011 Udostępnij Opublikowano 28 Sierpnia 2011 Aha, literówka. Zawsze zapominam jak się to pisze. E:No tak i x+ i y+. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 29 Sierpnia 2011 Autor Udostępnij Opublikowano 29 Sierpnia 2011 Dzięki za pomoc wszystko śmiga. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 7 Października 2011 Autor Udostępnij Opublikowano 7 Października 2011 Otwieram ten temat, bo problem jest nadal taki sam a nowego tematu dwa razy nie będę otwierał... Bawiłem się trochę skryptem (scr_team) i oto on: GML if distance_to_object(obj_player)>40 //check if the distance to player is bigger than 40 pixels { mp_potential_step(obj_player.x,obj_player.y,4,1) //go to player position with speed of 2 and avoid all objects } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// if distance_to_object(obj_player)<15 //check if the distance to player is smaller than 15 pixels { speed=0 //stop moving } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// if distance_to_object(obj_player)<5 //check if the distance to player is smaller than 5 pixels { // TUTAJ POTRZEBUJE KODU NA RUSZANE SIE DO TYLU / SCHODZENIE Z DROGI GRACZOWI. } Próbowałem różnych metod ale i tak za każdym razem = fail. A to co wyżej napisałem że śmiga, to śmiga ale nie do końca poprawnie, bo członek drużyny idzie do +x i +y przy tym też blokuje gracza. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 7 Października 2011 Udostępnij Opublikowano 7 Października 2011 GML mp_potential_step(lengthdir_x(30,obj_player.direction-180),lengthdir_y(30,obj_player.direction-180),4,1) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 7 Października 2011 Autor Udostępnij Opublikowano 7 Października 2011 Nie działa, członkowie drużyny idą nad gracza gdy ten jest zbyt blisko, nawet jeśli są pod nim... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 7 Października 2011 Udostępnij Opublikowano 7 Października 2011 GML mp_potential_step(lengthdir_x(-30,direction),lengthdir_y(-30,direction),4,1) albo GML mp_potential_step(lengthdir_x(30,direction),lengthdir_y(30,direction),-4,1) Jest wiele rozwiązań a to jest jednym z najgorszych :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
karolo320 Opublikowano 7 Października 2011 Udostępnij Opublikowano 7 Października 2011 if distance_to_object(obj_player)>40 { mp_potential_step(obj_player.x,obj_player.y,4,1) }else speed=0 if distance_to_object(obj_player)<15 { x-=lengthdir_x(spid,point_direction(gracz.x,gracz.y,x,y) y-=lengthdir_y(spid,point_direction(gracz.x,gracz.y,x,y) } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SKiD Opublikowano 8 Października 2011 Autor Udostępnij Opublikowano 8 Października 2011 Wrzuciłem, i teraz jest zupełnie odwrotnie zamiast iść do góry (tak jak poprzednio to robili) to teraz idą na dół... GML mp_potential_step(obj_player.x,obj_player.y,-4,1) A ja pogłówkowałem trochę w nocy i wpisałem coś takiego. Wszystko jest git tylko czy nie będzie z tym żadnych problemów? (oczywiście oprócz ostatniej cyfry 1 bo zmienię na 0) 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ę