Adriann Opublikowano 11 Kwietnia 2017 Udostępnij Opublikowano 11 Kwietnia 2017 Witajcie moje skarby, to znowu ja:3 Przychodzę dziś do was z kolejnym problemem wynikającym z mojej programistycznej ułomności. Jak zapewne wiecie bijatykę chodzoną gdzie do wczoraj atak był reprezentowany przez dodatkowy obiekt co sprawiało masę problemów i dziś wymieniłem to na kolizję liniową. Przy owej wymianie postanowiłem przepisać również kod na obronę, obrywanie itp bo nie działał do końca tak jak planowałem iiii w zasadzie to nie działa prawie wcale, niespecjalnie rozumiem dlaczego, wszystko teoretycznie powinno grać, kod wygląda następująco(wszystko w jednym skrypcie): GML argument0//przeciwnik kolizja: GML if argument0.draw_atk=1 { if collision_line((argument0.phy_position_x+20*argument0.image_yscale),argument0.phy_position_y,(argument0.phy_position_x+65*argument0.image_yscale),argument0.phy_position_y,id,false,false) {sword_coll=1}} else sword_coll=0; Zmienne w grze mówią że to działa doskonale Problem pojawia się w samych zmianach: GML dd//zmienna dodatkowa; deff// tu mają przełączać się akcje; garda//od tego uzależnionyy jest typ ataku; akcja//jaki atak wykonuje; Poz//odgrywana animacja; blok//zmienna pomocnicza do Poz, 0 zwykly atak,1odbicie od obrony, 2 jednoczesny atak kl// zmiennik dla image_index, w niektórych wariantach kodu poniżej blokował się na wartosci 0.4 GML if dd=0 && sword_coll=1////////////////////////////////////////////////////////// { if garda!=argument0.akcja {deff='hurt' dd=2 } else if garda=argument0.akcja && akcja=0 {deff='obrona' dd=1 } else if akcja=argument0.akcja && akcja!=0 {deff='clash' d=2 } } if dd=1 {kl=argument0.kl} if dd=2 {kl+=0.4} if deff='obrona'{/////OBRONA argument0.blok=1;// odbicie u przeciwnika if argument0.garda=1 Poz='def1' if argument0.garda=2 Poz='def2'; if argument0.garda=3 Poz='def3'; }////////////////////////// if deff='clash'///////CLASH { if argument0.x>x && blok=0 phy_speed_x=-(h/5);//odskakuje od gracza if argument0.x<x && blok=0 phy_speed_x=(h/5); blok=2; if kl>=19 {deff=0 dd=0 }}///////////////////////// if deff='hurt'////////HURT { if argument0.akcja=1 Poz='hurt_garda1'; if argument0.akcja=2 Poz='hurt_garda2'; if argument0.akcja=3 Poz='hurt_garda3'; if argument0.x>x phy_speed_x=-(h/2);//odskakuje od gracza if argument0.x<x phy_speed_x=(h/2); if kl>=19 {deff=0 dd=0 } } Docelowo akcje powinny się zerować po odegraniu ganimacji na image_index=kl Mam nadzieję że w miarę jasno wyjaśniłem ten bałagan:o Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 11 Kwietnia 2017 Udostępnij Opublikowano 11 Kwietnia 2017 Jedyne co widzę to to: GML if dd=0 && sword_coll=1////////////////////////////////////////////////////////// { if garda!=argument0.akcja //AKCJA A {deff='hurt' dd=2 } else if garda=argument0.akcja && akcja=0 //AKCJA B {deff='obrona' dd=1 } else if akcja=argument0.akcja && akcja!=0 //AKCJA C {deff='clash' d=2 } } Opcja A i Opcja B tylko moga sie wykonac bo garda albo jest albo nie jest rowna, wiec zatrzyma sie na ktores z nich. Powinno być: if C else if A else if B Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 11 Kwietnia 2017 Autor Udostępnij Opublikowano 11 Kwietnia 2017 To niewiele zmieniło, dalej zatrzymuje się na obronie, właściwie właśnie z samą obroną jest problem. Nawet jak się nie bronimy to def nie zostaje na 0 tylko po chwili przechodzi na obronę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 11 Kwietnia 2017 Udostępnij Opublikowano 11 Kwietnia 2017 Cóż, jeżeli to jedyne miejsce w którym ustawiasz obronę, to musi dochodzić do niepoprawnej zmiany jednego lub obu warunków (dd i sword_coll) Dopisz wewnątrz ifa show_debug_message("True"); I odpal z poziomu GMa gre i zobacz czy w compile logu spamuje "True" kiedy nie powinno być kolizji. Jeżeli tak, to masz źle kolizję jednak zrobioną. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 12 Kwietnia 2017 Autor Udostępnij Opublikowano 12 Kwietnia 2017 Udało się jakoś rozwiązać(obrona nie zerowała się na koniec) ale mam kolejny poważny problem! Troszkę mi głupio że tak was ostatnio męczę ale sprawa jest bardzo pilna:< Mam dwa skrypty, w jednym mamy akcje gracza a w drugim przeciwnika, każdy z nich ma taki sam kod na kolizje: GML argument0 to przeciwnik, a dokładniej dla wrogów gracz_PARENT a gracza enemy_PARENT draw_atk to moment kiedy obiekt rysuje linię ataku sword_coll kolizje z mieczem GML if argument0.draw_atk=1 { if collision_line((argument0.phy_position_x+20*argument0.image_yscale),argument0.phy_position_y,(argument0.phy_position_x+65*argument0.image_yscale),argument0.phy_position_y,id,false,false) {sword_coll=1}} else sword_coll=0; Same kolizje działają wybornie ale problem pojawia się kiedy wstawiam kilku przeciwników, wtedy gracz reaguje tylko na jednego z nich i nie wiem jak przypisać tą rysowaną linię do pojedynczych obiektów wrogów.Tzn wiem że trzeba przypisać linię do id wroga ale nie potrafię tego zrobić:< HALP PLS Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 13 Kwietnia 2017 Autor Udostępnij Opublikowano 13 Kwietnia 2017 Wybaczcie podbicie ale to potwornie ważne i pilne, mógłby ktoś rzucić okiem na tą sprawę?;> Stawiam Piwo na Pyrkonie:D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 14 Kwietnia 2017 Administratorzy Udostępnij Opublikowano 14 Kwietnia 2017 W sensie z gracza chcesz sprawdzać czy koliduje z każdym z przeciwników po kolei? Easy: GML with enemy_PARENT { // teraz other. == gracz_PARENT // teraz self., id == przetwarzany obecnie enemy_PARENT } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Adriann Opublikowano 14 Kwietnia 2017 Autor Udostępnij Opublikowano 14 Kwietnia 2017 Hah:D Dokładnie tak samo kumpel rozwiązał mi ten problem drugiej w nocy:d Tak czy inaczej bardzo dziękuję za odpowiedź;) 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ę