Cygnus Opublikowano 21 Czerwca 2015 Udostępnij Opublikowano 21 Czerwca 2015 Cześć wszystkim stworzyłem sobie obiekt controler a w nim życia ustawiłem startowo na 5 żyć no i ładnie obiekt wyświetla się w prawym górnym rogu,ale teraz chciałbym,żeby te życia zmieniały się np jeśli zbiorę 100 monet to zwiększy się o jedno życie,a jeśli spadnę na kolce to zmniejszy się o jedno,a jak wróg mnie dotknie,to najpierw energia się zmniejszy aż do poziomu takiego,że odejmie mi jedno życie itd.Jak to zrobić? tu pokaże część kodu wroga mojego obj_enemy_bulwa Event-kolizja z obj_player GML ///Zgniecenie if other.y < y && other.vspd > 0 && other.hurtClock == 0 && skok==0{ skok+=1; hp-=10; other.vspd = -12; with instance_create(x,y,obj_entity_die) { sprite_index = sprWrogGinie; //dodatkowa animacja wroga kiedy ginie gdy sie na niego naskoczy image_xscale = other.image_xscale; hspd = other.hspd; vspd = other.vspd; } } else if other.y < y && other.vspd > 0 && other.hurtClock == 0 && skok==1{ other.vspd = -12; hp-=10; with instance_create(x,y,obj_entity_die) { sprite_index = sprWrogGinie; //dodatkowa animacja wroga kiedy ginie gdy sie na niego naskoczy image_xscale = other.image_xscale; hspd = other.hspd; vspd = other.vspd; if (global.life > 0) { global.life -=1; instance_create(room_width/2,room_height/2,obj_player); } } instance_destroy(); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 21 Czerwca 2015 Filar Społeczności Udostępnij Opublikowano 21 Czerwca 2015 no to co to za filozofia GML if( global.coins >= 100 ) { global.coins -= 100; global.life += 1; } w evencie kolizji z kolcami GML global.life -= 1; a z energią to nie wiem dokładnie jaki efekt chcesz osiągnąć Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Orcadiusz Opublikowano 22 Czerwca 2015 Udostępnij Opublikowano 22 Czerwca 2015 GML GMLif (kolizja z wrogiem){ ///nie wiem nie znam sie na kolizjach global.energy-=1}; //czy o ile tam chcesz// if global.energy<1 { global.life-=1 energy=100}; ////100 dałem przykładowo, tu ustawisz maksymalną wartość energii chyba coś takiego, analogiczne do coins tylko w drugą stronę. Niestety jak już pisałem; albo dasz to w colision event z wrogiem albo wymyśl swoje kolizje, ja ich nie opanowałem:p. albo lepiej: GML if global.energy<1 { global.life-=1 global.energy=100}; ///////////////////////////// colision event with "wróg" global.energy-=1 pamietaj że ilość energi jaka ubędzie na sekundę będzie taka sama jak ilość stepów w room options>settings Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 22 Czerwca 2015 Autor Udostępnij Opublikowano 22 Czerwca 2015 no to co to za filozofia GMLif( global.coins >= 100 ) { global.coins -= 100; global.life += 1; } w evencie kolizji z kolcami GMLglobal.life -= 1; a z energią to nie wiem dokładnie jaki efekt chcesz osiągnąć ANtY dzięki;) z Energią to taki efekt chcę osiągnąć,że jeśli wskaźnik energii osiągnie 0 to odejmie mi życie o tak,czyli np jak podejde do wroga i wróg zada mi obrażenia energia mi się zmniejsza,a kiedy całkowicie mi się zmniejszy,wtedy tracę życie,o taki efekt mi się rozchodzi. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 22 Czerwca 2015 Filar Społeczności Udostępnij Opublikowano 22 Czerwca 2015 no to w evencie kolizji z przeciwnikiem GML global.energy -= 30; w stepie postaci, czy kogokolwiek w sumie: GML if( global.energy <= 0 ) { global.energy = 100; global.life -= 1; } edit: jak chcesz, żeby ta energia się odnawiała to w stepie GML if( global.energy < 100 ) global.energy += 0.1; else global.energy = 100; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 24 Czerwca 2015 Autor Udostępnij Opublikowano 24 Czerwca 2015 no dobra to gdzie mam to wpisać tą opcje,żeby wróg w momencie ,kiedy energia się skończ zabrał jedno życie i żebym zaczynam od początku tego pokoju w którym się obecnie znajduje? to teraz tak na przykładzie mojego kodu: Event-kolizja z obj_player GML ///Zgniecenie if other.y < y && other.vspd > 0 && other.hurtClock == 0 && skok==0{ skok+=1; hp-=10; other.vspd = -12; with instance_create(x,y,obj_entity_die) { sprite_index = sprWrogGinie; //dodatkowa animacja wroga kiedy ginie gdy sie na niego naskoczy image_xscale = other.image_xscale; hspd = other.hspd; vspd = other.vspd; } } else if other.y < y && other.vspd > 0 && other.hurtClock == 0 && skok==1{ other.vspd = -12; hp-=10; with instance_create(x,y,obj_entity_die) { sprite_index = sprWrogGinie; //dodatkowa animacja wroga kiedy ginie gdy sie na niego naskoczy image_xscale = other.image_xscale; hspd = other.hspd; vspd = other.vspd; if (global.life > 0) { global.life -=1; instance_create(room_width/2,room_height/2,obj_player); } } instance_destroy(); } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 24 Czerwca 2015 Autor Udostępnij Opublikowano 24 Czerwca 2015 Może tak tu są obrażenia jakie wróg zadaje mojemu bohaterowi czyli: obj_player a w nim event i kolizja z wrogiem czyli obj_enemy event GML if !vspd > 0 && hurtClock == 0 && other.hurtClock == 0 && sign(x-other.x) == other.image_xscale { hp -= 15; hurtClock = room_speed; vspd = -8; hspd = sign(x-other.x)*16; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 24 Czerwca 2015 Autor Udostępnij Opublikowano 24 Czerwca 2015 a tu mój stworzony obj_game_controler i wszystko co w nim jst zawarte,to on głównie odpowiada za te funkcje: CREATE GML ///Setup global.pScore = 0; global.life = 5; globalvar spawnX, spawnY; //View globalvar gvX, gvY, gvW, gvH, gvObj, gvOffX, gvOffY; gvX = view_xview[0]; gvY = view_yview[0]; gvW = view_wview[0]; gvH = view_hview[0]; gvObj = view_object[0]; gvOffX = 0; gvOffY = 0; //HUD hpHUD = 0; maxHpHUD = 0; END STEP GML ///View if view_wview[0] != gvW || view_hview[0] != gvH { var tempW, tempH; tempW = view_wview[0]; tempH = view_hview[0]; if gvW/view_wport[0] >= gvH/view_hport[0] { view_hview[0] = lerp(view_hview[0],gvH,.3); view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0]; } else { view_wview[0] = lerp(view_wview[0],gvW,.3); view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; } view_xview[0] -= (view_wview[0]-tempW)/2; view_yview[0] -= (view_hview[0]-tempH)/2; } if view_wview[0] > room_width { view_wview[0] = room_width; view_hview[0] = view_wview[0]/view_wport[0]*view_hport[0]; } if view_hview[0] > room_height { view_hview[0] = room_height; view_wview[0] = view_hview[0]/view_hport[0]*view_wport[0]; } if instance_exists(gvObj) { gvX = min(max(0,gvObj.x+gvOffX-view_wview[0]/2),room_width-view_wview[0]); gvY = min(max(0,gvObj.y+gvOffY-view_hview[0]/2),room_height-view_hview[0]); gvOffX = 0; gvOffY = 0; } view_xview[0] = round(min(max(0,lerp(view_xview[0],gvX,.15)),room_width-view_wview[0])); view_yview[0] = round(min(max(0,lerp(view_yview[0],gvY,.15)),room_height-view_hview[0])); gvW = gvWStart; gvH = gvHStart; //Backgrounds for(i=0;i<8;i++) { if background_visible == true || background_foreground == true { //Horizontal if background_width != room_width { background_x = view_xview[0]/(room_width-view_wview[0])*(room_width-background_width); } //Vertical if background_height != room_height { background_y = view_yview[0]/(room_height-view_hview[0])*(room_height-background_height); } } } Room start GML ///Destroy self if string_copy(room_get_name(room),0,9) != "roo_world" { //wyszukiwwanie nazw map z poaczatkiem roo_world instance_destroy(); } GML ///View globalvar gvXStart, gvYStart, gvWStart, gvHStart, gvObjStart; gvXStart = view_xview[0]; gvYStart = view_yview[0]; gvWStart = view_wview[0]; gvHStart = view_hview[0]; gvObjStart = view_object[0]; if instance_exists(gvObj) { view_xview[0] = min(max(0,gvX),room_width-view_wview[0]); view_yview[0] = min(max(0,gvY),room_height-view_hview[0]); } DRAW GUI GML ///Draw player HUD draw_set_color(c_white); draw_text(49, 88, string(" Score: " + string(global.pScore))); var __guiW = display_get_gui_width(), __guiH = display_get_gui_height(); draw_sprite(spr_healthbar,0,0,0); draw_text(64, 64, string(" Lives: " + string(global.life))); if instance_exists(par_player) { hpHUD = lerp(hpHUD,par_player.hp,.5); maxHpHUD = par_player.maxHp; with obj_player { var _offset; _offset = 0; draw_set_font(fnt_pwrup); draw_set_valign(fa_bottom); draw_set_halign(fa_center); draw_set_color(c_white); if pwrupSpd > 0 { draw_sprite_ext(spr_pwrup_speed,0,__guiW-26,29+35*_offset,1,1,0,c_gray,.5); draw_text(__guiW-26,29+35*_offset,string(ceil(pwrupSpd/room_speed))); _offset++; } if pwrupStr > 0 { draw_sprite_ext(spr_pwrup_strength,0,__guiW-26,35+35*_offset,1,1,0,c_gray,.5); draw_text(__guiW-26,35+35*_offset,string(ceil(pwrupStr/room_speed))); _offset++; } if pwrupJmp > 0 { draw_sprite_ext(spr_pwrup_jump,0,__guiW-26,28+35*_offset,1,1,0,c_gray,.5); draw_text(__guiW-26,28+35*_offset,string(ceil(pwrupJmp/room_speed))); _offset++; } } } else { hpHUD = lerp(hpHUD,0,.5); } draw_sprite_part(spr_healthbar,1,4,0,91/maxHpHUD*hpHUD,32,4,0); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Czerwca 2015 Udostępnij Opublikowano 24 Czerwca 2015 W step gracza. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 24 Czerwca 2015 Filar Społeczności Udostępnij Opublikowano 24 Czerwca 2015 w step gracza: GML if( global.energy <= 0 ) { global.energy = 100; global.life -= 1; room_restart(); } staraj się nie zlepiać 1000 kawalków kodu, którego zupełnie nie rozumiesz, tylko próbować to od podstaw napisać chociaż jakieś podstawowe elementy, żebyś wiedział w ogóle co się dzieje w tym kodzie twojej gry bo to co tu wklejasz, nawet w sumie nie wiedząc co odpowiada za umieranie gracza to niezły bajzel Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 24 Czerwca 2015 Autor Udostępnij Opublikowano 24 Czerwca 2015 no to w evencie kolizji z przeciwnikiem GMLglobal.energy -= 30; w stepie postaci, czy kogokolwiek w sumie: GMLif( global.energy <= 0 ) { global.energy = 100; global.life -= 1; } edit: jak chcesz, żeby ta energia się odnawiała to w stepie GMLif( global.energy < 100 ) global.energy += 0.1; else global.energy = 100; ta opcja global.energy nie działa u mnie chyba ,ze gdzies musze to stworzyc? GML global.energy GML if( global.energy <= 0 ) { global.energy = 100; global.life -= 1; room_restart(); } to u mnie nie działa,być może muszę to w obj_game_controler wpisać,bo nie istnieje u mnie global.energy Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Czerwca 2015 Udostępnij Opublikowano 24 Czerwca 2015 Zmień w step gracza na to: GML if( hp <= 0 ) { hp = 100; global.life -= 1; room_restart(); } Czytałeś ty w ogóle to co kopiowałeś? Chyba nie bo w innym wypadku na 100% byś zauważył że obj_player posiada już zmienną odpowiadającą za energię czyli zmienna "hp" Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Orcadiusz Opublikowano 24 Czerwca 2015 Udostępnij Opublikowano 24 Czerwca 2015 Wiem jak poradziś sobie z tym problemem, szybkie i skuteczne. Najpierw zaznacz klocek kodu, a potem za pomocą klawisza "delete" usuniesz wszystkie niedogodności :). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 24 Czerwca 2015 Autor Udostępnij Opublikowano 24 Czerwca 2015 Faktycznie hp! Dzięki Lord życia już działają;) jesteś wielki;) no dobra to teraz jeszcze jak zrobić żeby w momencie zebrania 100monet np otrzymam jedno życie,oraz gdy osiągnę wartość 0 żyć to gra się kończy Game Over Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 25 Czerwca 2015 Filar Społeczności Udostępnij Opublikowano 25 Czerwca 2015 o monetach już pisałem dużo postów temu: GML if( global.coins >= 100 ) { global.coins -= 100; global.life += 1; } game over: GML if( global.life <= 0 ) { room_goto( room_main_menu ); //albo podaj tu jakiś inny room, np. z ekranem game over } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 25 Czerwca 2015 Autor Udostępnij Opublikowano 25 Czerwca 2015 Anty ImLord dziękuje wam za pomoc o i zrobiłem sobie plansze game over;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 25 Czerwca 2015 Autor Udostępnij Opublikowano 25 Czerwca 2015 No a teraz jeszcze taka sprawa wszystko ładnie działa z tymi monetami bohater je zbiera i jak uzyska 100monet to daje mu się życie...a co teraz zrobić,bo w momencie,kiedy bohater zginie,a wcześniej zbiorę w danym miejscu monety,to powinno ich już w tym miejscu nie być,a są,jak to zrobić że jak zgine i zbiorę wcześniej monety,to później ich już tam nie ma. GML if( global.coins >= 100 ) { global.coins -= 100; global.life += 1; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 25 Czerwca 2015 Udostępnij Opublikowano 25 Czerwca 2015 Czyli, że resetujesz room. Po prostu bohatera cofnij do innej pozycji. Będzie najprostsze. Jeśli chcesz resetować room musisz się np w controlerze pobawić i zrobić coś takiego, że wczytujesz z niego czy zebrałeś tę monetę, czy nie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 25 Czerwca 2015 Autor Udostępnij Opublikowano 25 Czerwca 2015 No właśnie o to mi chodzi,że chce resetować room,że już zebrałem te monety,wiesz jak to zrobić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 25 Czerwca 2015 Filar Społeczności Udostępnij Opublikowano 25 Czerwca 2015 dokladnie dodaj w create postaci: GML start_x = x; start_y = y; i zmien umieranie na: (w stepie gracza) GML if( hp <= 0 ) { hp = 100; global.life -= 1; x = start_x; y = start_y; } a z resetowaniem rooma to byś musiał bardziej pokombinować, musiałbyś dla wszystkich monetek zapisywać, czy zostały zebrane, czy nie, i na starcie rooma to wczytywać, lepiej poczekaj z tym na programistę :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 25 Czerwca 2015 Autor Udostępnij Opublikowano 25 Czerwca 2015 dokladnie dodaj w create postaci: GMLstart_x = x; start_y = y; i zmien umieranie na: (w stepie gracza) GMLif( hp <= 0 ) { hp = 100; global.life -= 1; x = start_x; y = start_y; } a z resetowaniem rooma to byś musiał bardziej pokombinować, musiałbyś dla wszystkich monetek zapisywać, czy zostały zebrane, czy nie, i na starcie rooma to wczytywać, lepiej poczekaj z tym na programistę :P ANtY i chyba będę musiał poczekać na mojego programistę z projektu;) ale pokombinuje z tym trochę zrobię tak jak napisałeś dzięki brachu;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 25 Czerwca 2015 Udostępnij Opublikowano 25 Czerwca 2015 Nie widzę sensu abyś musiał resetować room. Chyba, że masz jeszcze przeciwników. Ale to i tak łatwiej ich ożywić aniżeli sprawdzać, czy te monety zebrałeś :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 26 Czerwca 2015 Autor Udostępnij Opublikowano 26 Czerwca 2015 Ale zobacz Herr Kaktus;) jak wrogów się ożywi,to nie jest zamierzony cel,ponieważ chodzi mi o to,żeby nie było już w danym miejscu monet jak je wcześniej zebrałem i zginę o o to mi chodzi. Dzięki Panowie jest tak jak powinno być;) 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ę