3r3se7ven Opublikowano 1 Września 2015 Udostępnij Opublikowano 1 Września 2015 Tak a potem strasznie obciąży mi to grę ;) Zamierzasz napisać dla wroga tłustsze ai niż w total war? Bo póki tego nei zrobisz to nie będzie mulić :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 1 Września 2015 Autor Udostępnij Opublikowano 1 Września 2015 Zamierzasz napisać dla wroga tłustsze ai niż w total war? Bo póki tego nei zrobisz to nie będzie mulić :) Wystarczy te co mam...na razie skupiam się na tym co jest nie tak przy obracaniu wroga;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 1 Września 2015 Udostępnij Opublikowano 1 Września 2015 Wystarczy te co mam...na razie skupiam się na tym co jest nie tak przy obracaniu wroga;) Oddziel obrót wroga jako virtual state i jego rysowanie jako drawing state. Jedna część jest istotna dla "fizyki" gry, druga dla wyświetlenia rezultatu. Jak to rozdzielisz to będzie Ci łatwiej przeprowadzić obliczenia po "fizycznej" kolizji i na ich podstawie dokonać korekt przed decyzją o rysowaniu. Czyli ustalisz pełny, niezgliczowany stan wroga, przeniesiesz go do stanu obliczenia grafiki wroga na tej bazie i dopiero dojdzie to to draw już poustawiane. Na razie upchnąłeś w jednej sekwencji ruch i zmianę grafiki, na początku to dobre, ale na dłuższą metę jak za tydzień wymyślisz inne, lepsze sposoby, to okaże się, że masz strukturę każdego elementu w grze inną i nie możesz wymienić jednego z elementów korekty stanu bez rozpruwania kodu obiektu. Po prostu oszczędzisz sobie zgrzytania zębami na później :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 2 Września 2015 Autor Udostępnij Opublikowano 2 Września 2015 Oddziel obrót wroga jako virtual state i jego rysowanie jako drawing state. Jedna część jest istotna dla "fizyki" gry, druga dla wyświetlenia rezultatu. Jak to rozdzielisz to będzie Ci łatwiej przeprowadzić obliczenia po "fizycznej" kolizji i na ich podstawie dokonać korekt przed decyzją o rysowaniu. Czyli ustalisz pełny, niezgliczowany stan wroga, przeniesiesz go do stanu obliczenia grafiki wroga na tej bazie i dopiero dojdzie to to draw już poustawiane. Na razie upchnąłeś w jednej sekwencji ruch i zmianę grafiki, na początku to dobre, ale na dłuższą metę jak za tydzień wymyślisz inne, lepsze sposoby, to okaże się, że masz strukturę każdego elementu w grze inną i nie możesz wymienić jednego z elementów korekty stanu bez rozpruwania kodu obiektu. Po prostu oszczędzisz sobie zgrzytania zębami na później :) Dzięki;) Twój sposób jest całkiem ciekawy....ale zbyt skomplikowany obecnie jak dla mnie... ja obecnie zrobiłem tak... usunąłem część kodu z AI i tak jak myślałem if place_free powodowało błąd obracania ,kiedy wróg widział ścianę dziedziczącą z par_solid teraz jeszcze pozostało mi do naprawienia obrót wroga przy krawędzi obiektu dziedziczonego z par_solid czyli wróg zbliża się do krawędzi i ma zawracać,a nie spadać w dół..z tym mam problem... step wroga wygląda teraz tak STEP GML var stopped; stopped=0; image_angle = direction; if distance_to_object(obj_player)<90 { stopped=1 if obj_player.x>x image_xscale=1; else image_xscale=-1; if( strzal ) { var i; i = instance_create( x, y, obj_laserek ); i.speed = 10; i.hspeed=image_xscale*10; strzal = 0; alarm[0]=room_speed*0.2 } } else { if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2); if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_solid)) x+=image_xscale*5; } //naprawiamy bugujacego sie wroga przy zawracaniu przeszkoda par_solid if place_meeting(x+5,y,par_solid) && image_xscale = 1 { image_xscale = -1; } if place_meeting(x-5,y,par_solid) && image_xscale = -1 { image_xscale = 1; } ///Ruch wroga z odwracaniem go przez obiekty dziedziczace z par_solid if !place_meeting(x+sign(image_xscale),y-2,par_solid) { if image_xscale > 0 { hspd = min(hspd+sign(image_xscale),2); } else if image_xscale < 0 { hspd = max(hspd+sign(image_xscale),-2); } } if hspd == 0 { image_xscale *= -1; unstick(8); } //Obrazenia wroga if hurtClock > 0 { visible = !visible; hurtClock -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); instance_create(x,y+50,choose(obj_coin,object102)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) { sprite_index = DinoGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; } } if (stopped) hspd=0; // czasowy respawn wrogow troche pomeczyles sie ale dziala jak trzeba :) if (dead == true) { //obj_spawn.dead = true; //respawn zabitego wroga jak nie bedzie dzialac to wtedy dead=true i wpisac instance_create(x,y,obj_spawn) instance_create(x,y,obj_spawn_dino); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 2 Września 2015 Udostępnij Opublikowano 2 Września 2015 A spróbuj tego: GML var stopped; stopped=0; image_angle = direction; if distance_to_object(obj_player)<90 { stopped=1 if obj_player.x>x image_xscale=1; else image_xscale=-1; if( strzal ) { var i; i = instance_create( x, y, obj_laserek ); i.speed = 10; i.hspeed=image_xscale*10; strzal = 0; alarm[0]=room_speed*0.2 } } else { if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2); if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_solid)) x+=image_xscale*5; else image_xscale*=-1; } //naprawiamy bugujacego sie wroga przy zawracaniu przeszkoda par_solid if (place_meeting(x+5,y,par_solid) || place_free(x+5,y+32)) && image_xscale = 1 { image_xscale = -1; } if (place_meeting(x-5,y,par_solid) || place_free(x-5,y+32) && image_xscale = -1 { image_xscale = 1; } ///Ruch wroga z odwracaniem go przez obiekty dziedziczace z par_solid if !place_meeting(x+sign(image_xscale),y-2,par_solid) { if image_xscale > 0 { hspd = min(hspd+sign(image_xscale),2); } else if image_xscale < 0 { hspd = max(hspd+sign(image_xscale),-2); } } if hspd == 0 { image_xscale *= -1; unstick(8); } //Obrazenia wroga if hurtClock > 0 { visible = !visible; hurtClock -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); instance_create(x,y+50,choose(obj_coin,object102)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) { sprite_index = DinoGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; } } if (stopped) hspd=0; // czasowy respawn wrogow troche pomeczyles sie ale dziala jak trzeba :) if (dead == true) { //obj_spawn.dead = true; //respawn zabitego wroga jak nie bedzie dzialac to wtedy dead=true i wpisac instance_create(x,y,obj_spawn) instance_create(x,y,obj_spawn_dino); } No to prawda że się spaghetti porobiło trochę i ciężko się to czyta. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 2 Września 2015 Udostępnij Opublikowano 2 Września 2015 Teraz tak... Wyciągasz wszystkie takie kwiatki jak if distance_to_object(obj_player)<90 i.speed = 10 Dopisujesz komentarz dla potomnych co to robi i po co tu jest. Zamieniasz 90 na zmienną "dystans_reakcji", "prędkość lasera" i wyciągasz tę zmienną w paczkę zdefiniowanych zmiennych sterujących zachowaniem wroga. z takich kwiatków: with instance_create(x,y,obj_entity_die) Wyciągasz "obj_entity_die" i używasz poleceń asset i predefiniujesz w paczce jaki asset. Tak żeby jak już uznasz że kod działa to zmieniać zmienne, a nie dłubać w kodzie. A z makaronem tak jest że czasem się zdarza, i wtedy trzeba coś z nim zrobić, najlepiej pociąć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 2 Września 2015 Udostępnij Opublikowano 2 Września 2015 A oprócz tego później będziesz mógł łatwo dodać to że wróg podnosi jakąś broń i zmienia się prędkość lasera itd. Jedyny minus to jest to że musisz to wszystko zrozumieć i podzielić sobie na części. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 2 Września 2015 Udostępnij Opublikowano 2 Września 2015 Nie obciąży Ci gry to, że podzielisz kod na czytelniejszy. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 2 Września 2015 Autor Udostępnij Opublikowano 2 Września 2015 Nie obciąży Ci gry to, że podzielisz kod na czytelniejszy. właśnie już to robię chłopaki.. dzięki za radę;) parę rzeczy już ogarnąłem...obraca mi już się od ścian..jeszcze tylko od krawędzi niech się obraca.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 2 Września 2015 Udostępnij Opublikowano 2 Września 2015 właśnie już to robię chłopaki.. dzięki za radę ;) parę rzeczy już ogarnąłem...obraca mi już się od ścian..jeszcze tylko od krawędzi niech się obraca.. Postaw wkoło krawędzi ścianę? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 4 Września 2015 Autor Udostępnij Opublikowano 4 Września 2015 A spróbuj tego: GMLvar stopped; stopped=0; image_angle = direction; if distance_to_object(obj_player)<90 { stopped=1 if obj_player.x>x image_xscale=1; else image_xscale=-1; if( strzal ) { var i; i = instance_create( x, y, obj_laserek ); i.speed = 10; i.hspeed=image_xscale*10; strzal = 0; alarm[0]=room_speed*0.2 } } else { if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2); if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_solid)) x+=image_xscale*5; else image_xscale*=-1; } //naprawiamy bugujacego sie wroga przy zawracaniu przeszkoda par_solid if (place_meeting(x+5,y,par_solid) || place_free(x+5,y+32)) && image_xscale = 1 { image_xscale = -1; } if (place_meeting(x-5,y,par_solid) || place_free(x-5,y+32) && image_xscale = -1 { image_xscale = 1; } ///Ruch wroga z odwracaniem go przez obiekty dziedziczace z par_solid if !place_meeting(x+sign(image_xscale),y-2,par_solid) { if image_xscale > 0 { hspd = min(hspd+sign(image_xscale),2); } else if image_xscale < 0 { hspd = max(hspd+sign(image_xscale),-2); } } if hspd == 0 { image_xscale *= -1; unstick(8); } //Obrazenia wroga if hurtClock > 0 { visible = !visible; hurtClock -= 1; } else { visible = true; } if hp <= 0 { instance_destroy(); instance_create(x,y+50,choose(obj_coin,object102)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) { sprite_index = DinoGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; } } if (stopped) hspd=0; // czasowy respawn wrogow troche pomeczyles sie ale dziala jak trzeba :) if (dead == true) { //obj_spawn.dead = true; //respawn zabitego wroga jak nie bedzie dzialac to wtedy dead=true i wpisac instance_create(x,y,obj_spawn) instance_create(x,y,obj_spawn_dino); } No to prawda że się spaghetti porobiło trochę i ciężko się to czyta. Dzięki za pomoc chłopaki...Kt117 właśnie tak wcześniej zrobiłem jak napisałeś..i faktycznie dziwna sytuacja place_free wszystko psuło... teraz jak widzi mur przeszkodzę par_solid to się ładnie obraca wróg i idzie w przeciwnym kierunku...została kwestia... krawędzi par_solid tylko krawędzi..na razie zrobiłem przy krawędziach obiekty niewidzialne,na które wróg reaguje i się obraca,ale nie tak chciałem,żeby to działało... najlepiej,żeby wróg ,kiedy widzi krawędź koniec platformy par_solid to ma zawracać..dziwne,że na place_free to nie działa i to psuło.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 4 Września 2015 Udostępnij Opublikowano 4 Września 2015 Dzięki za pomoc chłopaki...Kt117 właśnie tak wcześniej zrobiłem jak napisałeś..i faktycznie dziwna sytuacja place_free wszystko psuło... teraz jak widzi mur przeszkodzę par_solid to się ładnie obraca wróg i idzie w przeciwnym kierunku...została kwestia... krawędzi par_solid tylko krawędzi..na razie zrobiłem przy krawędziach obiekty niewidzialne,na które wróg reaguje i się obraca,ale nie tak chciałem,żeby to działało... najlepiej,żeby wróg ,kiedy widzi krawędź koniec platformy par_solid to ma zawracać..dziwne,że na place_free to nie działa i to psuło.. Aby wróg "widział" musisz zrobić próbkowanie terenu wkoło wroga. Tworzysz ds_grid, albo ds_list, i pakujesz tam wartości testu zajętości terenu wkoło wroga, im bardziej zajęty teren tym wyższa wartość. Następnie dodajesz heurystyczną odległość do celu/gracza do tych wartości, z danych pól testu. Obracasz wroga w kierunku najniższej uzyskanej wartości i do przodu. To taki najprostszy greed algorithm. Zatnie się na pewnych zawiniętych ścianach - pułapkach na chciwca, ale to się rozwinie później. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 4 Września 2015 Udostępnij Opublikowano 4 Września 2015 Jemu raczej chodzi o prosta detekcję krawędzi platformy. :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 4 Września 2015 Udostępnij Opublikowano 4 Września 2015 Jemu raczej chodzi o prosta detekcję krawędzi platformy. :P Czyli taki magiczny kamień, który przechowuje właściwość, iż na kierunku jakiejś osi nie ma sąsiada :) No to ktoś musi tę informację zebrać, albo ten kamień, albo ten wróg... Albo trzeba zrobić specjalny kamień na koniec platformy, który zastąpi wszystkie kamienie na końcach platformy po przemieleniu całego levelu ^^ Ja bym jednak zajętość terenu próbkował wrogiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 25 Września 2015 Autor Udostępnij Opublikowano 25 Września 2015 Czyli taki magiczny kamień, który przechowuje właściwość, iż na kierunku jakiejś osi nie ma sąsiada :) No to ktoś musi tę informację zebrać, albo ten kamień, albo ten wróg... Albo trzeba zrobić specjalny kamień na koniec platformy, który zastąpi wszystkie kamienie na końcach platformy po przemieleniu całego levelu ^^ Ja bym jednak zajętość terenu próbkował wrogiem. Właśnie chodzi mi głównie o to,że ja mam kamienie niewidzialne ustawione obecnie od których wróg się odbija zawraca w drugą stronę,ale to nie o to chodzi,bo jak zobaczy bohatera,to potrafi przy kamieniu się zawiesić trzęsie jak głupi i tyle.. Im lord dobrze powiedział mi właśnie chodzi o detekcje krawędzi platform..tyle,że tak jak wcześniej wspomniałem mam daną scenerie narysowaną i w background ustawiona no i na nią ustawiam niewidzialne solidy,po których chodzi sobie bohater i to właśnie na krawędzich tych solid wróg miałby wykrywać jej koniec i się obracać żeby nie wpaść w przepaść itp.. Tutaj STEP mojego wroga GML var stopped; stopped=0; image_angle = direction; if distance_to_object(obj_player)<90 { stopped=1 if obj_player.x>x image_xscale=1; else image_xscale=-1; if( strzal ) { var i; i = instance_create( x, y, obj_laserek ); i.speed = 10; i.hspeed=image_xscale*10; //i.direction = point_direction(i.x,i.y,obj_player.x,obj_player.y); //ew i.hspeed=image_xscale*10; jak ma strzelac tylko w poziomie, niezaleznie od wysokosci bohatera strzal = 0; alarm[0]=room_speed*1.5 } } else { if alarm[1] = -1 alarm[1] = room_speed+random(room_speed*2); if (place_free(x+image_xscale*5,y) && instance_position(x+image_xscale*5,y+32,par_solid)) x+=image_xscale*5; } //naprawiamy bugujacego sie wroga przy zawracaniu przeszkoda par_solid if place_meeting(x+5,y,par_solid) && image_xscale = 1 { image_xscale = -1; } if place_meeting(x-5,y,par_solid) && image_xscale = -1 { image_xscale = 1; } ///Ruch wroga z odwracaniem go przez obiekty dziedziczace z par_solid if !place_meeting(x+sign(image_xscale),y-2,par_solid) { if image_xscale > 0 { hspd = min(hspd+sign(image_xscale),2); } else if image_xscale < 0 { hspd = max(hspd+sign(image_xscale),-2); } } if hspd == 0 { image_xscale *= -1; unstick(8); } //Obrazenia wroga if hurtClock > 0 { visible = !visible; hurtClock -= 1; } else { visible = true; } // Odwracanie wroga od obiektu niewidzialnego if place_meeting(x+32,y+3,obj_niewidzialny) || place_meeting(x-32,y-3,obj_niewidzialny) && image_xscale = 1 { image_xscale = -abs(image_xscale); } else if place_meeting(x+32,y+3,obj_niewidzialny) || place_meeting(x-32,y-3,obj_niewidzialny) && image_xscale = -1 { image_xscale = abs(image_xscale); } if hp <= 0 { instance_destroy(); instance_create(x,y-50,choose(obj_coin, obj_diamencik)) // daje losowy item np monety albo jabłuszka with instance_create(x,y,obj_entity_die) { sprite_index = DinoGinie; //sprite do poruszania sie wroga image_xscale = other.image_xscale; image_yscale = other.image_yscale; hspd = other.hspd; vspd = other.vspd; audio_play_sound(dzwiek_wrog_ginie, 1, false); //odtwarzamy dzwiek przy smierci wroga } } if (stopped) hspd=0; // czasowy respawn wrogow troche pomeczyles sie ale dziala jak trzeba :) if (dead == true) { //obj_spawn.dead = true; //respawn zabitego wroga jak nie bedzie dzialac to wtedy dead=true i wpisac instance_create(x,y,obj_spawn) instance_create(x,y,obj_spawn_dino); } O ile na scenerii zbudowanej z tilesetów to działa bardzo dobrze,to tu na scenerii narysowanej ręcznie całej i nałożonej solidy już to nie działa mi:/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 26 Września 2015 Udostępnij Opublikowano 26 Września 2015 // Odwracanie wroga od obiektu niewidzialnego if place_meeting(x+32,y+3,obj_niewidzialny) || place_meeting(x-32,y-3,obj_niewidzialny) && image_xscale = 1 { image_xscale = -abs(image_xscale); } else if place_meeting(x+32,y+3,obj_niewidzialny) || place_meeting(x-32,y-3,obj_niewidzialny) && image_xscale = -1 { image_xscale = abs(image_xscale); } Napisz tekstem co autor miał na myśli jak to pisał. Coś podejrzewam, że autor pominął nawiasy w syntaxie i ma pętlę co step z tym warunkiem: place_meeting(x+32,y+3,obj_niewidzialny) na ten place_meeting(x+32,y+3,obj_niewidzialny) co skutkuje przekładaniem wartości zespolonej (image scale)(znak) na przeciwny znak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 28 Września 2015 Autor Udostępnij Opublikowano 28 Września 2015 Napisz tekstem co autor miał na myśli jak to pisał. Coś podejrzewam, że autor pominął nawiasy w syntaxie i ma pętlę co step z tym warunkiem: place_meeting(x+32,y+3,obj_niewidzialny) na ten place_meeting(x+32,y+3,obj_niewidzialny) co skutkuje przekładaniem wartości zespolonej (image scale)(znak) na przeciwny znak. No dobra 3r3se7ven czyli w tej sekcji kodu jest błąd..hmmm w sumie jak załóżmy ustawie te niewidzialne klocki po obu stronach krańcach platformy,i w środku jest wróg tylko,który chodzi,to nic się złego nie dzieje,natomiast występuje czasem problem przy wrogu,który już ma AI jak nas zobaczy zatrzymuje się i strzela,lub wróg ,który jak nas zobaczy to goni,no i jak trafi na krańcu platformy na obiekt niewidzialny to lubi dostać tzw trzęsiawki,co jest uciążliwe:/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
3r3se7ven Opublikowano 28 Września 2015 Udostępnij Opublikowano 28 Września 2015 No dobra 3r3se7ven czyli w tej sekcji kodu jest błąd..hmmm w sumie jak załóżmy ustawie te niewidzialne klocki po obu stronach krańcach platformy,i w środku jest wróg tylko,który chodzi,to nic się złego nie dzieje,natomiast występuje czasem problem przy wrogu,który już ma AI jak nas zobaczy zatrzymuje się i strzela,lub wróg ,który jak nas zobaczy to goni,no i jak trafi na krańcu platformy na obiekt niewidzialny to lubi dostać tzw trzęsiawki,co jest uciążliwe:/ if (place_meeting(x+32,y+3,obj_niewidzialny) || place_meeting(x-32,y-3,obj_niewidzialny)) && image_xscale = 1 { image_xscale = -abs(image_xscale); } else if (place_meeting(x+32,y+3,obj_niewidzialny) || place_meeting(x-32,y-3,obj_niewidzialny)) && image_xscale = -1 { image_xscale = abs(image_xscale); } A lub B i C to nie to samo co (A i C) lub (B i C) czyli (A lub B ) i C //robię warunki animacji w podobny sposób, więc też mi się czasem myli i później szukam gdzie podziałem nawiasy, w jedną stronę działa a w drugą się telepie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 28 Września 2015 Autor Udostępnij Opublikowano 28 Września 2015 if (place_meeting(x+32,y+3,obj_niewidzialny) || place_meeting(x-32,y-3,obj_niewidzialny)) && image_xscale = 1 { image_xscale = -abs(image_xscale); } else if (place_meeting(x+32,y+3,obj_niewidzialny) || place_meeting(x-32,y-3,obj_niewidzialny)) && image_xscale = -1 { image_xscale = abs(image_xscale); } A lub B i C to nie to samo co (A i C) lub (B i C) czyli (A lub B ) i C //robię warunki animacji w podobny sposób, więc też mi się czasem myli i później szukam gdzie podziałem nawiasy, w jedną stronę działa a w drugą się telepie. Zgadza się..no niestety z nawiasami to jest teraz tak,że wróg dostaje pełne delirum i staje się królem parkietu;) jest gorzej niż wcześniej,bez nawiasów tylko z lewej strony jest delirkum,a z prawej jest dobrze;) Zrobiłem tak i problem ustąpił dyskoteka ustąpiła stoickiego spokoju;] o to kod w stepie wroga GML if place_meeting(x+5,y,obj_niewidzialny) && image_xscale = 1 { image_xscale = -1; } if place_meeting(x-5,y,obj_niewidzialny) && image_xscale = -1 { image_xscale = 1; } Może komuś się przyda dzięki za fatyge;) 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ę