Cygnus Opublikowano 17 Sierpnia 2014 Udostępnij Opublikowano 17 Sierpnia 2014 Cześć wszystkim mam problem z wrogiem w mojej grze. Otóż idzie on tylko w jednym kierunku,nie obraca się i ucieka za plansze:/ Nie wiem,co robię nie tak:/ Proszę pomóżcie,bo ręce mi już opadają. Chciałbym,żeby wróg chodził w lewo i w prawo i zatrzymywał się na krawędzi,i obracał się no taki inteligentny jego ruch;) Acha i jak utworzyć pasek energi i życie O to kod wroga;) CREATE image_speed = 0; image_index = 0; wrog_dead = 0; zabicie_wroga = 0; randomowy_ruch_wroga = choose(1,2); if randomowy_ruch_wroga = 1 hspeed = 4; if randomowy_ruch_wroga = 2 hspeed = -4; ///initialize Variables dir = -1; movespeed = 1; grav = 0.2; hsp = 0; vsp = 0; STEP hsp = dir * movespeed; vsp += grav; ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision)) { while (!place_meeting(x+sign(hsp),y,obj_Collision)) { x+= sign(hsp); } hsp = 0; dir *= -1; } x += hsp; ///Vertical Collision if (place_meeting(x,y+vsp,obj_Collision)) { while (!place_meeting(x,y+sign(vsp),obj_Collision)) { y += sign(vsp); } vsp = 0; } y += vsp; ///Enemy Collision if (place_meeting(x,y,obj_player)) { if (obj_player.y < y-16) { with (obj_player) vsp =-jumping; instance_destroy(); } else { game_restart(); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 17 Sierpnia 2014 Udostępnij Opublikowano 17 Sierpnia 2014 Tutaj masz jedynie odbicie od ścian zrobione a nie odbicie od krawędzi. Przeciwnik chodzi w jedną stronę przez to: GML randomowy_ruch_wroga = choose(1,2); if randomowy_ruch_wroga = 1 hspeed = 4; if randomowy_ruch_wroga = 2 hspeed = -4; To jest błędne, chciałeś zrobić by losowo się wybierał kierunek startowy ale u ciebie zmienna, która o tym decyduje nazywa się "dir" Więc zamiast tego powinno być: GML dir = choose(-1, 1); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 17 Sierpnia 2014 Udostępnij Opublikowano 17 Sierpnia 2014 Tak przy okazji, istnieje funkcja move_outside_solid(dir,maxdist), ktora jest w stanie zastapic Twoja petle while. GML if (place_meeting(x+hsp,y,obj_Collision)) { move_outside_solid((1+sign(hsp))*90,abs(hsp)) //(1+sign(hsp))*90 oznacza, ze jesli hsp jest wieksze od 0, dir bedzie rowne 0, hsp < 0 -> dir = 180 hsp = 0; dir *= -1; //to nie to dir co wyzej, mozesz zostawic jak jest } Jezeli obj_Collision nie ma zaznaczone solid, to albo zaznacz, albo zamien move_outside_solid na move_outside_all (w tym przypadku Twoj obiekt bedzie unikal wszystkich obiektow) Tak samo mozesz usunac petle w Vertical Collision i Enemy Collision, ale bedziesz musial uzyc innych argumentow w funkcji, jezeli nie jestes gotowy na takie wyzwanie, mozesz zostac przy swoich petlach Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 17 Sierpnia 2014 Autor Udostępnij Opublikowano 17 Sierpnia 2014 Dzięki Chłopaki,walczę z tym,ale dalej mam problem,pozmieniałem,tak jak opisaliście to.I teraz,to tak wróg stoi w miejscu,jak na niego skacze ok to znika,jak do niego podejdę,to ja gnie ok.Ale Mam problem dalej z tym żeby wróg chodził na wyznaczonym odcinku i się obracał,a nie w jednym kierunku chodził.No teraz obecnie stoi wróg. A i sprawa jak stworzyć wskaźnik energii,i życia. I np jak podejdę do wroga,to mi zabierze trochę energii, I jeszcze taka sprawa.Mam obiekt kolce i chciałbym,że jak na nie spadnę,to zginę i odejmie mi jedno życie. Solid mam zaznaczone u wroga;) Mój kod teraz wroga tak wygląda:) CREATE image_speed = 0; image_index = 0; wrog_dead = 0; zabicie_wroga = 0; dir = choose(-1, 1); if dir= 1 hspeed = 4; if dir = 2 hspeed = -4; ///initialize Variables dir = -1; movespeed = 1; grav = 0.2; hsp = 0; vsp = 0; STEP hsp = dir * movespeed; vsp += grav; ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision)) { move_outside_all((1+sign(hsp))*90,abs(hsp)) { x+= sign(hsp); } hsp = 0; dir *= -1; } x += hsp; ///Vertical Collision if (place_meeting(x,y+vsp,obj_Collision)) { move_outside_all((1+sign(hsp))*90,abs(hsp)) { y += sign(vsp); } vsp = 0; } y += vsp; ///Enemy Collision if (place_meeting(x,y,obj_player)) { if (obj_player.y < y-16) { with (obj_player) vsp =-jumping; instance_destroy(); } else { game_restart(); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 17 Sierpnia 2014 Udostępnij Opublikowano 17 Sierpnia 2014 Nie no ale po co ty znowu te swoje: if dir= 1 hspeed = 4; if dir = 2 hspeed = -4; Tutaj tych zmiennych nie używaj bo ci popsują fizykę. hspeed u ciebie to hsp, vspeed to vsp GML (create) image_speed = 0; image_index = 0; wrog_dead = 0; zabicie_wroga = 0; ///initialize Variables dir = choose(-1, 1); movespeed = 1; // jak chcesz zmienic predkosc na 4 to tutaj grav = 0.2; hsp = 0; vsp = 0; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 17 Sierpnia 2014 Autor Udostępnij Opublikowano 17 Sierpnia 2014 No Dobra zrobiłem tak,i nadal wróg stoi:/ Nie mam już pomysłów:/ Solid nic nie daje,zaznaczam i to samo jak nie zaznaczony:/ kod tak wygląda wroga CREATE image_speed = 0; image_index = 0; wrog_dead = 0; zabicie_wroga = 0; //initialize Variables dir = choose(-1, 1); movespeed = 1; grav = 0.2; hsp = 0; vsp = 0; STEP hsp = dir * movespeed; vsp += grav; ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision)) { move_outside_all((1+sign(hsp))*90,abs(hsp)) { x+= sign(hsp); } hsp = 0; dir *= -1; } x += hsp; ///Vertical Collision if (place_meeting(x,y+vsp,obj_Collision)) { move_outside_all((1+sign(hsp))*90,abs(hsp)) { y += sign(vsp); } vsp = 0; } y += vsp; ///Enemy Collision if (place_meeting(x,y,obj_player)) { if (obj_player.y < y-16) { with (obj_player) vsp =-jumping; instance_destroy(); } else { game_restart(); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 17 Sierpnia 2014 Udostępnij Opublikowano 17 Sierpnia 2014 Ten move_outside_all tutaj psuje. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 17 Sierpnia 2014 Autor Udostępnij Opublikowano 17 Sierpnia 2014 No to wobec tego co mam wpisać w te miejsce żeby było dobrze? tak żeby ten wróg wreszcie działał jak należy:) Chodził grzecznie nie koniecznie krokiem tanecznym;) np idzie sobie po platformie i zatrzymuje się po czym obraca i znowu zatrzymuje sie przy krawędzi i obraca,o takie coś mi chodzi. Ktoś mógłby mi to napisać w całości? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 17 Sierpnia 2014 Udostępnij Opublikowano 17 Sierpnia 2014 Tak jak miałeś poprzednio while (!place_meeting(x+sign(hsp),y,obj_Collision)) oraz while (!place_meeting(x,y+sign(vsp),obj_Collision)) Tylko to będzie ci go odbijać od ścian, więc jak chcesz to możesz nad krawędziami zrobić niewidzialny obiekt obj_Collision i od niego by się odbijał. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 18 Sierpnia 2014 Autor Udostępnij Opublikowano 18 Sierpnia 2014 No dobrze wróciłem do poprzednich ustawień,zrobiłem tak jak napisałeś,fakt teraz chodzi wróg,tylko odbija się od obj_Collision.Postawiłem na krawędziach stworzony nowy obj_niewidzialny.I nic:/ Przechodzi przez ten obiekt:/Kurcze wpisywałem nawet w kodzie tutaj dodatkową ścieżkę w horizontal collision i w vertical collision GML if (place_meeting(x+hsp,y,obj_niewidzialny)) while (!place_meeting(x+sign(hsp),y,obj_niewidzialny i w vertical collision tez tak wpisalem,to teraz spada objekt z platformy:/ Aha i jeszcze jak zrobić wróg był animowany tak jak mój bohater,wróg też ma ruchome obrazki GML hsp = dir * movespeed; vsp += grav; ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision)) { while (!place_meeting(x+sign(hsp),y,obj_Collision)) { x+= sign(hsp); } hsp = 0; dir *= -1; } x += hsp; ///Vertical Collision if (place_meeting(x,y+vsp,obj_Collision)) { while (!place_meeting(x,y+sign(vsp),obj_Collision)) { y += sign(vsp); } vsp = 0; } y += vsp; ///Enemy Collision if (place_meeting(x,y,obj_player)) { if (obj_player.y < y-16) { with (obj_player) vsp =-jumping; instance_destroy(); } else { game_restart(); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 18 Sierpnia 2014 Udostępnij Opublikowano 18 Sierpnia 2014 Używaj tagów [ gml ] do pisania czytelnego kodu na forum. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Sierpnia 2014 Udostępnij Opublikowano 18 Sierpnia 2014 Obiektowi obj_niewidzialny ustal parent obj_Collision i będzie się od niego odbijać. Co do animacji to w step: GML image_speed = movespeed; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 18 Sierpnia 2014 Autor Udostępnij Opublikowano 18 Sierpnia 2014 Zrobiłem tak,Wróg się odbija,z parowałem obj_niewidzialny z obj_Collision,ale problem pozostaje z obracaniem wroga:/ fakt odbija się od niewidocznych obiektów,ale nie obraca się:/ i jeszcze za szybko przebiera nogami:/ A i sprawa niewidzialnego obiektu,fakt odznaczyłem obj//-niewidzialny,ale jak bohater idzie,to go wyczuwa:/ a nie da się,żeby tylko obj_enemy go wyczuwał,a dla bohatera byłby obiektem neutralnym i jak koło niego by przechodził,to nie kolidowałby z nim. No i kwestia tak jak wspomniałem żyć,chcę np stworzyć życie np 5 żyć jak to zrobić? i że jak spadne na kolce i na wroga to mi odejmie życie STEP hsp = dir * movespeed; vsp += grav; image_speed = 1; ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision)) { while (!place_meeting(x+sign(hsp),y,obj_Collision)) { x+= sign(hsp); } hsp = 0; dir *= -1; } x += hsp; ///Vertical Collision if (place_meeting(x,y+vsp,obj_Collision)) { while (!place_meeting(x,y+sign(vsp),obj_Collision)) { y += sign(vsp); } vsp = 0; } y += vsp; ///Enemy Collision if (place_meeting(x,y,obj_player)) { if (obj_player.y < y-16) { with (obj_player) vsp =-jumping; instance_destroy(); } else { game_restart(); } } CREATE wrog_dead = 0; zabicie_wroga = 0; dir = choose(-1, 1); ///initialize Variables dir = -1; movespeed = 1; grav = 0.2; hsp = 0; vsp = 0; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 18 Sierpnia 2014 Udostępnij Opublikowano 18 Sierpnia 2014 Dobra to zrób inaczej, cofnij tego parenta. Tak jak wcześniej było i teraz zmodyfikuj kod tak: GML ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny)) { while (!place_meeting(x+sign(hsp),y,obj_Collision)) { x+= sign(hsp); } hsp = 0; dir *= -1; } A prędkość: GML image_speed = movespeed*modyfikator; image_speed działa tak że wartość 1 to normalna prędkość animacji czyli jedna klatka na jeden step. Jak chcesz spowolnić to zmniejsz tą wartość. Obracanie zrobisz tak: GML (step) if (hsp != 0) image_xscale = sign(hsp); image_xscale scaluje ci obrazek. Normalna wartość to 1. Wartość -1 spowoduje że obrazek się odbije w drugą stronę. sign() zwraca: 1 gdy hsp > 0, -1 gdy hsp < 0, 0 gdy hsp = 0 stąd ten warunek if (hsp != 0) by nigdy nie było zera bo wtedy postać zniknie Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Sierpnia 2014 Autor Udostępnij Opublikowano 19 Sierpnia 2014 Animacja już chodzi dobrze...ale dalej problem z obracaniem tego wroga:/ chodzi w jednym kierunku,no i dałem obiekt niewidzialny na krawędziach i się nie odbija od niego.Nie wiem jak to mam zrobić:/ Wiem,że mi to tłumaczysz,ale nie wiem jak to zrobić żeby to działało normalnie.Animacja wroga już jest w porządku idzie sobie normalnie w moją stronę,ale nie reaguje na obj_niewidzialny,który postawiłem na krawędziach i w pobliżu wroga:/No i nie obraca się ten wróg:/ jeden kierunek obrał sobie i tyle:/ Proszę może napisz mi konkretnie co,gdzie mam wpisać:/ Widzę,że ogarnięty jesteś w programowaniu.Ja jestem typowym sieciowcem,a programowanie zajmuje się hobbystycznie,bo chce stworzyć swoją grę. o to kod wroga: CREATE wrog_dead = 0; zabicie_wroga = 0; dir = choose(-1, 1); ///initialize Variables dir = -1; movespeed = 0.5; grav = 0.2; hsp = 0; vsp = 0; STEP hsp = dir * movespeed; vsp += grav; image_speed = 0.03; if (hsp != 0) image_xscale = sign(hsp); image_xscale = -1; image_xscale = 1; ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny)) { while (!place_meeting(x+sign(hsp),y,obj_Collision)) { x+= sign(hsp); } hsp = 0; dir *= -1; } x += hsp; ///Vertical Collision if (place_meeting(x,y+vsp,obj_Collision)) { while (!place_meeting(x,y+sign(vsp),obj_Collision)) { y += sign(vsp); } vsp = 0; } y += vsp; ///Enemy Collision if (place_meeting(x,y,obj_player)) { if (obj_player.y < y-16) { with (obj_player) vsp =-jumping; instance_destroy(); } else { game_restart(); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 19 Sierpnia 2014 Udostępnij Opublikowano 19 Sierpnia 2014 Myśl nad tym co wpisujesz, patrz co w create zrobiłeś, pogrubię ci: Widzisz błąd? wrog_dead = 0; zabicie_wroga = 0; dir = choose(-1, 1); ///initialize Variables dir = -1; movespeed = 0.5; grav = 0.2; hsp = 0; vsp = 0; Oczywiście to nie rozwiązuje problemu z odbijaniem :/ I czy na obj_niewidzialnym postać się zatrzymuje czy zupełnie nic? EDIT: Zaraz, co? xDDDD GML if (hsp != 0) image_xscale = sign(hsp); image_xscale = -1; image_xscale = 1; Ty chyba nie znasz absolutnych podstaw. Proponuję Wejść w help > Reference > GML Overview przeczytać i zrozumieć na spokojnie ten dział. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 19 Sierpnia 2014 Udostępnij Opublikowano 19 Sierpnia 2014 GML if (hsp != 0) image_xscale = sign(hsp); image_xscale = -1; image_xscale = 1; zastanow sie, co robi ten kod GML dir = choose(-1, 1); ///initialize Variables dir = -1; albo ten Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Sierpnia 2014 Autor Udostępnij Opublikowano 19 Sierpnia 2014 Myśl nad tym co wpisujesz, patrz co w create zrobiłeś, pogrubię ci: Widzisz błąd? Oczywiście to nie rozwiązuje problemu z odbijaniem :/ I czy na obj_niewidzialnym postać się zatrzymuje czy zupełnie nic? EDIT: Zaraz, co? xDDDDGMLif (hsp != 0) image_xscale = sign(hsp); image_xscale = -1; image_xscale = 1; Ty chyba nie znasz absolutnych podstaw. Proponuję Wejść w help > Reference > GML Overview przeczytać i zrozumieć na spokojnie ten dział. No właśnie panie Lordzie postać wroga nie zatrzymuje się na obj_niewidzialny:) Idzie sobie dalej jakby niby nic;) ot ucieka mi;) i nie chce się obrócić;) Przecież napisałem,że hobbystycznie się tym zajmuje;) programowanie dla mnie jest magią;) dlatego od wielu lat siedzę w sieciach zawodowo;) Domyślam się,że mam błąd,no i nie wiem jak go rozwiązać ten wróg jest nie możliwy;) Dobra,a powiedz mi,co mam zrobić,że np idę sobie postacią dochodzę do końca pokoju,i chce płynnie przejść do drugiego?co mam zrobić wpisać co gdzie;)? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 19 Sierpnia 2014 Udostępnij Opublikowano 19 Sierpnia 2014 Wszyscy się tutaj hobbistycznie tym zajmują. A powiedz jeszcze jak zrobiłeś niewidzialny obiekt. Ustawiłeś sprit taki jak mają te obj_collision tylko odznaczyłeś visible? Czy nie ustawiłeś w ogóle żadnego spritu. Możesz nacisnąć "show information" i wkleić tutaj. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Sierpnia 2014 Autor Udostępnij Opublikowano 19 Sierpnia 2014 Tylko odznaczyłem Visible:) Information about object: obj_enemy Sprite: spr_enemy Solid: false Visible: true Depth: 0 Persistent: false Parent: Mask: No Physics Object Create Event: execute code: wrog_dead = 0; zabicie_wroga = 0; dir = choose(-1, 1); ///initialize Variables dir = -1; movespeed = 0.5; grav = 0.2; hsp = 0; vsp = 0; Step Event: execute code: hsp = dir * movespeed; vsp += grav; image_speed = 0.03; if (hsp != 0) image_xscale = sign(hsp); ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny)) { while (!place_meeting(x+sign(hsp),y,obj_Collision)) { x+= sign(hsp); } hsp = 0; dir *= -1; } x += hsp; ///Vertical Collision if (place_meeting(x,y+vsp,obj_Collision)) { while (!place_meeting(x,y+sign(vsp),obj_Collision)) { y += sign(vsp); } vsp = 0; } y += vsp; ///Enemy Collision if (place_meeting(x,y,obj_player)) { if (obj_player.y < y-16) { with (obj_player) vsp =-jumping; instance_destroy(); } else { game_restart(); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Sierpnia 2014 Autor Udostępnij Opublikowano 19 Sierpnia 2014 Tylko odznaczyłem Visible:) Obj_enemy CREATE wrog_dead = 0; zabicie_wroga = 0; dir = choose(-1, 1); ///initialize Variables dir = -1; movespeed = 0.5; grav = 0.2; hsp = 0; vsp = 0; STEP hsp = dir * movespeed; vsp += grav; image_speed = 0.03; if (hsp != 0) image_xscale = sign(hsp); ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny)) { while (!place_meeting(x+sign(hsp),y,obj_Collision)) { x+= sign(hsp); } hsp = 0; dir *= -1; } x += hsp; ///Vertical Collision if (place_meeting(x,y+vsp,obj_Collision)) { while (!place_meeting(x,y+sign(vsp),obj_Collision)) { y += sign(vsp); } vsp = 0; } y += vsp; ///Enemy Collision if (place_meeting(x,y,obj_player)) { if (obj_player.y < y-16) { with (obj_player) vsp =-jumping; instance_destroy(); } else { game_restart(); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 19 Sierpnia 2014 Udostępnij Opublikowano 19 Sierpnia 2014 zapisz sobie kopie tego projektu. W kopii projektu zamien GML ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny)) { while (!place_meeting(x+sign(hsp),y,obj_Collision)) { x+= sign(hsp); } hsp = 0; dir *= -1; } na GML ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny)) { hsp = 0; dir *= -1; } Jezeli to nie zadziala, sprawdz, czy masz ustawiona maske we wrogu i w obj_Collision, jezeli nie, ustaw na <same as the sprite>. Funkcja place_meeting() nie dziala, jezeli obiekty biorace udzial we sprawdzaniu kolizji nie maja ustawionej maski Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Sierpnia 2014 Autor Udostępnij Opublikowano 19 Sierpnia 2014 Zadziałało,dałem maskę w obj_collision i obj_enemy.Wrog sie obraca odbija od niewidzialnego obiektu obj_niewidzialny. Ale teraz mam problem z bohaterem,co prawda chodzi prawidlowo lewo w prawo,ale teraz mi skok nie dziala bohatera jak tak zrobilem:/ Kod bohatera obj_Player CREATE start_x = x; start_y = y; phy_fixed_rotation = true; move_speed = 200; max_xspeed = 2; jumping = false; jump_force = -110; STEP phy_speed_x = max(min(phy_speed_x, max_xspeed) , -max_xspeed); if(phy_speed_x > 0.1 || phy_speed_x < -0.1) { sprite_index = spr_Player_Running; } else{ sprite_index = sprPlayer; } if (phy_speed_y > 1.2) { sprite_index = spr_Player_Falling; } image_speed = phy_speed_x / 10; background_x[0] = -phy_position_x / 5; background_x[0] = -phy_position_y / 5; background_x[1] = -phy_position_x / 5; background_x[1] = -phy_position_y / 5; press(up) first jump ///First Jump if (place_meeting(x,y+1, obj_Collision)) { jumping = true; alarm [0] = 1; physics_apply_impulse(x,y,0, jump_force); show_debug_message("First Jump") } Secound Jump /// Secound Jump if(jumping && alarm[0] < 0){ physics_apply_impulse(x,y,0, jump_force); jumping = false; show_debug_message("Double Jump") } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 19 Sierpnia 2014 Udostępnij Opublikowano 19 Sierpnia 2014 Czy gdy probujesz skakac, w konsoli edytora w GM:S wypisuje ci te debug_message, ktore ustawiles? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Sierpnia 2014 Autor Udostępnij Opublikowano 19 Sierpnia 2014 W edytorze nie ma informacji debug_messag. Ale pokombinwałem z maską i ustawiłem u obj_player maske z obj_collision czyli spr_wall i teraz skacze bohater mój. Tylko,że pewnie tylko wyłącznie będzie skakał na tym obiekcie czyli obj_collision (spr_wall) a na reszte obiektach nie będę mógł wykonać skoku. A powiedz mi co mam zrobić jak mam zrobione dwa pokoje roomy no i chcę z pierwszego pokoju przejść na drugi,w takim sensie,że idę sobie po pokoju dochodzę do końca pokoju no i chcę żeby się płynnie na drugi pokój dostać,wiesz w końcu to platformówka;) a plansza czyli świat nie składa się u mnie z jednego pokoju. A tak ogólnie,to dziękuję,jesteś w porządku,no i masz cierpliwość;) może będzie okazja w ramach rewanżu z czasem na piwo się wybrać;] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 19 Sierpnia 2014 Udostępnij Opublikowano 19 Sierpnia 2014 Cos w stylu Mega Mana? Tu jest pewien problem, w GM od 8.1 w dol bylo to calkiem proste, tam mialo sie dostep do room transitions, czyli efektow przejscia miedzy roomami. W GM:S jest to juz niemozliwe, trzeba takie cos zrobic recznie, a to wymaga sporo czasu i wiedzy o tym, jak dzialaja 'surfaces'. Duzo prosciej jest z efektem zaciemnienia podczas wychodzenia z rooma i rozjasniania podczas wchodzenia do rooma, po prostu rysujesz czarny prostokat na caly ekran i plynnie zmieniasz przezroczystosc tego prostokata, a w miedzyczasie zmieniasz room. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Sierpnia 2014 Autor Udostępnij Opublikowano 19 Sierpnia 2014 O dokładnie coś w stylu Megamana itp;) No dobrze;) tutaj gościu pokazał na filmiku jak to zrobić w GM Studio..ale coś mi nie wychodzi,skąd on ma spr_warp :/ Jak to zrobić..Jak widać można skoro gościowi na GM studio to działa. A i jeszcze kwestia mojego wroga co prawda ładnie chodzi w jedną i w drugą stronę,tylko zastanawiam się,dlaczego on do tyłu sobie chodzi;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 19 Sierpnia 2014 Udostępnij Opublikowano 19 Sierpnia 2014 A, o takie przejscia ci chodzi. Myslalem, ze chciales sam efekt graficzny przejscia do kolejnego rooma. Najprosciej jest stworzyc obiekt, na ktory jezeli wejdziesz, przenosi cie do danego rooma. Daj mu sprite'a i maske, ale odznacz 'visible'. Trzeba tez zrobic zmienna globalna, ktora zapamieta, w ktorym roomie byles ostatnio. Dzieki temu bedzie wiadomo, w ktorym miejscu ustawic bohatera podczas przenoszenia do innego roomu. Co do obracania sie wroga, spojrz raz jeszcze na ten kod: GML if (hsp != 0) image_xscale = sign(hsp); image_xscale = -1; image_xscale = 1; i zastanow sie, co jest nie tak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 20 Sierpnia 2014 Autor Udostępnij Opublikowano 20 Sierpnia 2014 No właśnie się zastanawiam co tu jest nie tak:/ GMLif (hsp != 0) image_xscale = sign(hsp); image_xscale = -1; image_xscale = 1; Mam teraz tak: GML hsp = dir * movespeed; vsp += grav; image_speed = 0.03; if (hsp != 0) image_xscale = sign(hsp); ///Horizontal Collision if (place_meeting(x+hsp,y,obj_Collision) || place_meeting(x+hsp,y,obj_niewidzialny)) { hsp = 0; dir *= -1; } x += hsp; ///Vertical Collision if (place_meeting(x,y+vsp,obj_Collision)) { while (!place_meeting(x,y+sign(vsp),obj_Collision)) { y += sign(vsp); } vsp = 0; } y += vsp; ///Enemy Collision if (place_meeting(x,y,obj_player)) { if (obj_player.y < y-16) { with (obj_player) vsp =-jumping; instance_destroy(); } else { game_restart(); } } Ok stworze obiekt maska i sprite to mam mu dać swojego bohatera? czyli obj_player w masce i sprite? Ta zmienna globalna dokładnie,rozumiem,że ma być w tym obiekcie co stworze do przenoszenia się do innego roomu,ale co mam tam dokładnie wpisać;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 20 Sierpnia 2014 Autor Udostępnij Opublikowano 20 Sierpnia 2014 A powiedz mi,dlaczego tylko mogę skakać na obj_collision,a na innych już platformach tylko chodzić mogę? co mam zrobić,żeby bohater skakał na wszystkich platformach,a nie tylko na jednej. 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ę