Cygnus Opublikowano 17 Lipca 2015 Udostępnij Opublikowano 17 Lipca 2015 Witam wszystkich. Myślę jak zrobić żeby bohater w momencie jak zeskakuje z dość dużej odległości,to odejmie mu energię,a jak jest już naprawdę wysoko to odejmie mu jedno życie. w Create bohatera mam tak: GML ////////////////////////////// ///////ZMIENNE STALE////////// ///////////////////////////// ///Ustawienia event_inherited(); hp = 100; maxHp = 100; attClock = 0; curAttack = 0; hurtClock = 0; swimDir = 0; drawAngle = 0; jumpStr = 0; jumpTimes = 0; climbing = false; //Moce specjalne pwrupSpd = 0; pwrupStr = 0; pwrupJmp = 0; //Pozycja odrodzenia Bohatera i skrypt widoku centralnego spawnX = x; spawnY = y; centerViewOnMe(); //zachowanie pozycji gracza przy checkpointach if (global.checkpointR == room) { x = global.checkpointx; y = global.checkpointy; } start_x = x; start_y = y; Game Maker Studio Pro posiadam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 17 Lipca 2015 Udostępnij Opublikowano 17 Lipca 2015 Myślę że jak wykryje że spada to na początku zapisać początkową wysokość bohatera, potem gdy już będzie na ziemi to zapisać do drugiej zmiennej końcową wysokość bohatera. Potem odjąć drugą zmienną od pierwszej i z tą różnicą działać. GML if(roznica > coś){ energia-=1; }else if(roznica > większe coś){ zycie-=1; } Myślę że wszystko jasno wytłumaczyłem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 17 Lipca 2015 Autor Udostępnij Opublikowano 17 Lipca 2015 A,więc zrobiłem tak w stepie bohatera swojego dałem tak: GML if(100 > 70){ hp -=1; }else if(100 > 90){ global.life -=1; } Coś robie nie tak,bo jak włącze teraz gre,to nawet nie skacząc energia mi od razu ucieka i zaraz ginę,a ma być tak,że jak skoczę z danej wysokości,to zabierze mi energie ileś tam procent tej energi,a jak za wysoko skoczę,to od razu życie mi odejmie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 17 Lipca 2015 Udostępnij Opublikowano 17 Lipca 2015 A,więc zrobiłem tak w stepie bohatera swojego dałem tak: GMLif(100 > 70){ hp -=1; }else if(100 > 90){ global.life -=1; } Coś robie nie tak,bo jak włącze teraz gre,to nawet nie skacząc energia mi od razu ucieka i zaraz ginę,a ma być tak,że jak skoczę z danej wysokości,to zabierze mi energie ileś tam procent tej energi,a jak za wysoko skoczę,to od razu życie mi odejmie... 100 jest zawsze większe od 70 i 90. zamiast 100 wstawiasz jakąś zmienną a nie liczbę :D Chyba od niedawna używasz GMa, mam rację? :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 17 Lipca 2015 Autor Udostępnij Opublikowano 17 Lipca 2015 Mateusz,a nie jest to zmienna liczbowa? kurcze..to jakiej użyć? bo się pogubiłem,ja z doskoku działam w GMS dobrze,że mój człowiek nie długo wraca;)Tak to jest jak grafik zajmuje się programowaniem,coś tam wychodzi ,ale zawodowcem nie jestem;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Mateusz Nejman Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 Mateusz,a nie jest to zmienna liczbowa? kurcze..to jakiej użyć? bo się pogubiłem,ja z doskoku działam w GMS dobrze,że mój człowiek nie długo wraca;)Tak to jest jak grafik zajmuje się programowaniem,coś tam wychodzi ,ale zawodowcem nie jestem;) Zmienna liczbowa a liczba to nie to samo. roznica to miała być zmienna liczbowa. Ja też zawodowcem nie jestem. Proste operacje na zmiennych to podstawa. Jak nie masz takich podstaw ogarniętych to za co ty się bierzesz. https://gmclan.org/index.php?wiki tutaj masz link do dokumentacji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 Ew jeśli używasz zwykłej grawitacji możesz zrobić coś takiego w kolizji z blokiem: GML if vspeed>ileśtam { kod } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dester Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 GML //Zaczyna spadać yy=y //Kolizja z podłogą if(y>yy+jakaśliczba){ //Auć! } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 18 Lipca 2015 Autor Udostępnij Opublikowano 18 Lipca 2015 mam zwykłą grawitacje a nie fizykę. w stepie gracza swojego dałem GML if(vspeed > 10){ hp -=1; }else if(vspeed > 20){ global.life -=1; } No,ale nic to nie daje...nic się nie dzieje... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 To daj mniejsze liczby. Zamiast 10 i 20 daj 1 i 2. No i to musi być w kolizji z podłogą nie w step Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 18 Lipca 2015 Autor Udostępnij Opublikowano 18 Lipca 2015 Zrobiłem tak w stepie gracza dałem GML if(vspeed > 70){ hp -=1; }else if(vspeed > 90){ global.life -=1; } No niestety nic to nie daje:/ nic się nie dzieje...bohater skacze z dużej odległości i nic mu nie jest energia się nie zmniejsza ani życie... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 Ale miałeś zmniejszyć. GML if(vspeed > 2){ global.life -=1; } else if(vspeed > 1){ hp -=1; } I dać w kolizji z podłożem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 18 Lipca 2015 Autor Udostępnij Opublikowano 18 Lipca 2015 wszystkie moje obiekty,żeby nie ustawiać wszędzie solidów na platformach są parent z obj_wall no i teraz tam dałem w tym obj_wall co dziedziczy z wszystkimi platformami solidy w kolizji z obj_gracz GML if(vspeed > 2){ global.life -=1; } else if(vspeed > 1){ hp -=1; } też nic to nie daje nadal bohater sobie skaczę i nie traci życia,ani energii.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 GML if(other.vspeed > 2){ global.life -=1; } else if(other.vspeed > 1){ other.hp -=1; } Daj tak Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 18 Lipca 2015 Autor Udostępnij Opublikowano 18 Lipca 2015 GML if(other.vspeed > 2){ global.life -=1; } else if(other.vspeed > 1){ other.hp -=1; } Daj tak Ok jak tylko dopadne sie do komputera,to sprawdze,moze w koncu to pomoze;-)? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 18 Lipca 2015 Autor Udostępnij Opublikowano 18 Lipca 2015 No i niestety ten kod nie działa;) poddaje się chyba;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 Ale nie działa tak samo czy inaczej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 Mialem to wyslac godzine temu ale jakos zapomnialem: Bo zapewne gracz zeruje vspeed zanim wall go sprawdzi. Zrob sprawdzenie vspeeda po stronie gracza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 18 Lipca 2015 Filar Społeczności Udostępnij Opublikowano 18 Lipca 2015 A,więc zrobiłem tak w stepie bohatera swojego dałem tak: GML if(100 > 70){ hp -=1; }else if(100 > 90){ global.life -=1; } Coś robie nie tak,bo jak włącze teraz gre,to nawet nie skacząc energia mi od razu ucieka i zaraz ginę,a ma być tak,że jak skoczę z danej wysokości,to zabierze mi energie ileś tam procent tej energi,a jak za wysoko skoczę,to od razu życie mi odejmie... skwaśniałem ostro xDD Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 18 Lipca 2015 Udostępnij Opublikowano 18 Lipca 2015 Reaktywujcie gmclanowe cytaty Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Lipca 2015 Autor Udostępnij Opublikowano 19 Lipca 2015 kt1117 no jest to samo Ok spróbuje w stepie bohatera to zrobić...może to coś pomoże.. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Lipca 2015 Autor Udostępnij Opublikowano 19 Lipca 2015 w create bohatera daje vspeed=0;? żeby to sprawdzić po stronie gracza Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 Nie w step tylko w kolizji z tym obiektem (ale w obiekcie gracza). I wtedy usuń wszystkie wystąpienia GML other. Dokładnie to tak: 1.Klikasz na obiekt gracza; 2.Klikasz add event->collision with (i tu ten obiekt co z nim kolizja) 3.Wklejasz GML if(vspeed > 2){ global.life -=1; } else if(vspeed > 1){ hp -=1; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Lipca 2015 Autor Udostępnij Opublikowano 19 Lipca 2015 Zrobiłem tak jak napisałeś kt1117 nic to nie daje...:/ wszystkie moje obiekty,po których chodzą dziedziczą z obj_wall ,bo tam mam ustawiony solid dla wszystkich tych platform,po których bohater chodzi..ustawiłem tak jak napisałeś nic to nie daje..próbuje z tym walczyć no i nic nie wychodzi... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 Pokaż kod jakiego używasz na grawitację. Oraz CAŁY kod z eventu kolizji z blokiem. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Lipca 2015 Autor Udostępnij Opublikowano 19 Lipca 2015 a,więc tak tu kod mojego bohatera STEP GML //Poruszające sie tlo za bohaterem gora dol background_x[0] = view_xview[view_current]*1.00; background_y[0] = view_yview[view_current]*0.8; ///Sterowanie if !place_meeting(x,y,obj_water) { //Ruch normalny if climbing == false { if keyboard_check_pressed(kJump) && inAir == false { vspd = -10-sign(pwrupJmp*3); jumpStr = 3; //Schodzenie if keyboard_check(kDown) && place_meeting(x,y+1,par_solid_ghost) { y += 4; vspd = 0; jumpStr = 0; jumpTimes = 0; } } else if keyboard_check(kJump) && jumpStr > 0 { vspd -= 2+sign(pwrupJmp); jumpStr--; } else { if keyboard_check_released(kJump) && jumpStr > 2 { vspd += 2+sign(pwrupJmp); } jumpStr = 0; } if jumpTimes > 0 && keyboard_check_pressed(kJump) && inAir == true { vspd = -10-sign(pwrupJmp*3); jumpStr = 0; jumpTimes--; } if keyboard_check(kAction) && attClock == false { if keyboard_check(kDown) { attClock = 12; curAttack = 1; with instance_create(x,y-16,obj_projectile) { hspd = other.image_xscale*10; vspd = -4; g = .2; owner = par_player; strength = 0; explode = true; explosionRadius = 30; explosionStrength = 2+(sign(other.pwrupStr)*8); image_blend = c_lime; } } else { attClock = 18; curAttack = 0; with instance_create(x,y,par_attack) { sprite_index = mask_player_attack; image_xscale = other.image_xscale; owner = par_player; strength = 1+(sign(other.pwrupStr)*4); } } } if keyboard_check(kRight) && !keyboard_check(kLeft) { if hspd < 10+(sign(pwrupSpd)*5) { hspd = min(hspd+(2+(sign(pwrupSpd)*2))*multiF,10+(sign(pwrupSpd)*5)); } image_xscale = 1; } if keyboard_check(kLeft) && !keyboard_check(kRight) { if hspd > -10-(sign(pwrupSpd)*5) { hspd = max(hspd-(2+(sign(pwrupSpd)*2))*multiF,-10-(sign(pwrupSpd)*5)); } image_xscale = -1; } //Wspinanie if place_meeting(x,y,par_climbable) && place_meeting(x,y-32,par_climbable) && place_meeting(x,y+32,par_climbable) && attClock <= 0 && (keyboard_check(kUp) || keyboard_check(kDown)) { climbing = true; vspd = 0; hspd = 0; } } //Wspinaczka if climbing == true { var __hsign = keyboard_check(vk_right)-keyboard_check(vk_left); var __vsign = keyboard_check(vk_down)-keyboard_check(vk_up); hspd = min(max(hspd+__hsign,-2),2); vspd = min(max(vspd+__vsign*2,-4),4); if __vsign == -1 && !place_meeting(x,y-32,par_climbable) { climbing = false; vspd = -10; } if __hsign != 0 { image_xscale = __hsign; } if !place_meeting(x,y,par_climbable) || !place_meeting(x,y+32,par_climbable) { climbing = false; } } } else { //Plywanie swimDir = point_direction(0,0,keyboard_check(kRight)-keyboard_check(kLeft),keyboard_check(kDown)-keyboard_check(kUp)); if abs(keyboard_check(kRight)-keyboard_check(kLeft))+abs(keyboard_check(kDown)-keyboard_check(kUp)) != 0 { hspd += lengthdir_x(.5,swimDir); if !(swimDir > 0 && swimDir < 180) || place_meeting(x,y-sprite_height/3-1,obj_water) { vspd += lengthdir_y(.5,swimDir); } } if keyboard_check(kUp) && !place_meeting(x,y-sprite_height/1.5,obj_water) && vspd <= 0 { vspd = -12; } } CREATE GML ////////////////////////////// ///////ZMIENNE STALE////////// ///////////////////////////// ///Ustawienia event_inherited(); hp = 100; maxHp = 100; attClock = 0; curAttack = 0; hurtClock = 0; swimDir = 0; drawAngle = 0; jumpStr = 0; jumpTimes = 0; climbing = false; vsp = 0; //Moce specjalne pwrupSpd = 0; pwrupStr = 0; pwrupJmp = 0; //Pozycja odrodzenia Klarka i skrypt widoku centralnego spawnX = x; spawnY = y; centerViewOnMe(); //zachowanie pozycji gracza przy checkpointach if (global.checkpointR == room) { x = global.checkpointx; y = global.checkpointy; } start_x = x; start_y = y; a tu w obj_player kod z kolizji z obj_wall ten co dziedziczy solidy z wszystkimi obiektami po których chodzi mój bohater GML if(vspeed > 2){ global.life -=1; } else if(vspeed > 1){ hp -=1; } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 Zamień GML vspeed na GML vspd Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Gibki Kaktus Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 Dziwisz się, że nie działa, skoro nie używasz tutaj żadnej grawitacji. Ani nigdzie nie ma vspeed... To jest cały kod? Nawet nie widzę gdzie zmieniasz pozycję y, ale z tego co jest tu napisane, to zamień po prostu vspeed na vspd i powinno działać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Cygnus Opublikowano 19 Lipca 2015 Autor Udostępnij Opublikowano 19 Lipca 2015 ech zamieniłem vspeed na vspd nie działa kurcze co jest nie tak:/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 19 Lipca 2015 Udostępnij Opublikowano 19 Lipca 2015 Dodaj na początku eventu kolizji GML show_message(string(vspd)) Poskacz trochę i podaj co wyskakuje 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ę