Dexter12 Opublikowano 12 Grudnia 2008 Opublikowano 12 Grudnia 2008 Siemka próbuje sobie przypomnieć jak zrobiłem działko w starej swojej grze "The Moving' ale nie moge sobie przypomnieć. I Dlatego chciałbym się was zapytać jak zrobić takie coś: że jak obiekt(player) znajduje się w danej odległości od obiektu(działka) to ma sie wywołać jakaś akcja ? wiem że to powinna być instrukcja warunkowa if. ale jak to zrobić? EDIT: Wie ktoś może jak zrobić jeszcze odstępy po między tworzącymi się objektami? Chodzi mi o czas
Hunter Opublikowano 12 Grudnia 2008 Opublikowano 12 Grudnia 2008 if distance_to_obiect(obj) <= ilosc pixeli { akcja }
Dexter12 Opublikowano 12 Grudnia 2008 Autor Opublikowano 12 Grudnia 2008 Wie ktoś może jak zrobić jeszcze odstępy po między tworzącymi się objektami? Chodzi mi o czas
Dexter12 Opublikowano 12 Grudnia 2008 Autor Opublikowano 12 Grudnia 2008 Jak? Dawno nie robiłem w game makerze to mógłbyś mi to wytłumaczyć?
Hunter Opublikowano 12 Grudnia 2008 Opublikowano 12 Grudnia 2008 Np. Create: alarm[0] = room_speed*5 Alarm0: instance_create(...) alarm[0] = room_speed*5
Phoenix Opublikowano 12 Grudnia 2008 Opublikowano 12 Grudnia 2008 GML //Create can=1; //Alarm [0] can=1; //Step if distance_to_object(player) <= np. 20 and can=1 { jakaś akcja na przykład strzelanie can=0; alarm[0]=10 } No i voala ( czy jakoś tak :P )
Dexter12 Opublikowano 13 Grudnia 2008 Autor Opublikowano 13 Grudnia 2008 A mam jeszcze pytanie: jaką liczbe wpisać żeby to strzelało jak karabin maszynowy?Probowałem rózne ale nigdy mi nie wyszło... PS. Była jeszcze jakaś inna funkcja niż ta którą wy podajecie.No i mi to nie chce zawsze strzelać :/
ZeroXbot Opublikowano 13 Grudnia 2008 Opublikowano 13 Grudnia 2008 Najlepiej jakąś małą 1 lub 2. Ta liczba to liczba milisekund po której alarm się uruchomi.
Dexter12 Opublikowano 13 Grudnia 2008 Autor Opublikowano 13 Grudnia 2008 Ale jak wpisze 1 to strzela wogule cały czas szybciej niz minigun. Nawet nie podlega instrukcji warunkowej if.
Hunter Opublikowano 13 Grudnia 2008 Opublikowano 13 Grudnia 2008 To zmien sobie wartosc alarmu na odpowiadającą tobie i twojemu uznaniu szybkosci miniguna.
Dexter12 Opublikowano 13 Grudnia 2008 Autor Opublikowano 13 Grudnia 2008 No ale jak zmienie juz na 2 to strzela tak samo jak na 10
ZeroXbot Opublikowano 13 Grudnia 2008 Opublikowano 13 Grudnia 2008 Jeśli chcesz to zrobić "dokładniej", w sensie że dokładniej chcesz ustalić czas pomiędzy wystrzałami, zrób to na zmiennych np. GML //Create reload=0 //Step reload+=1 //czyli co step (domyslnie na sekunde ich jest 30) wartosc zwieksza sie o 1 //to poniżej* if(reload>=/*tu wstaw wartość np.*/2) { //akcja strzelania reload=0 } EDIT: Zapomniałem, ten warunek if(reload... wstaw w warunek if(distance...*
ZeroXbot Opublikowano 13 Grudnia 2008 Opublikowano 13 Grudnia 2008 To niemożliwe, muszą być jakieś minimalne zmiany, nie może byc tak, że np. od wartości 1 do 5 strzela Ci za szybko, a od 6 wzwyż za wolno. Policz to sobie tak: 30 - prędkość rooma (domyślna) 2 - ilość stepów potrzebnych do spełnienia warunku 30/2=15 - tyle razy strzela na sekundę
Dexter12 Opublikowano 13 Grudnia 2008 Autor Opublikowano 13 Grudnia 2008 Mógłbyś mi podać jakiś przykład bo robiłem to już z różnymi cyframi np. 100 jest nadal to samo... <_<
Hunter Opublikowano 13 Grudnia 2008 Opublikowano 13 Grudnia 2008 To moze ty zarzuć nam swoim projektem bedzie łatwiej.
Dexter12 Opublikowano 13 Grudnia 2008 Autor Opublikowano 13 Grudnia 2008 Nie podam wam całego bo planuje wydać gre :D Ale dam wam to co chcem zrobić czyli chodzący enemy. // Create hsp = 2 alarm[0] = room_speed*0.5 // Alarm 0 sound_play(enemy_shoot) instance_create(enemy_with_gun.x, enemy_with_gun.y,enemy_bullet) //Step if place_free(x+hsp,y) {x+=hsp} else {hsp = -hsp} if place_meeting(x+hsp,y,player) {hps = -hsp} if place_meeting(x,y-1,player) {player.x += hsp} if place_meeting(x+hsp,y,player2) {hps = -hsp} if place_meeting(x,y-1,player2) {player2.x += hsp} if distance_to_object(player) < 200 { alarm[0]=10 }
ZeroXbot Opublikowano 13 Grudnia 2008 Opublikowano 13 Grudnia 2008 JA NIE MOGĘĘĘĘĘĘĘĘ! Chcesz, żebyśmy ci pomogli ze strzelaniem, a ty nam dajesz kod na wroga. Daj kod na strzelanie. Sorry, nie spojrzałem dokładnie na kod. Skoro masz 10 czyli strzela 10 razy na sekundę (10 milisekund=1/10sekundy).
Dexter12 Opublikowano 13 Grudnia 2008 Autor Opublikowano 13 Grudnia 2008 Ale coś wolno strzela :/ To na 100% nie jest 1/10 sekundy bo nie strzela tak szybko... Macie może jakieś inne rozwiązanie?
ZeroXbot Opublikowano 13 Grudnia 2008 Opublikowano 13 Grudnia 2008 A no fakt, bo zrobiłeś tak, że w każdym stepie gdy warunek odległości jest spełniony ustawia alarm na 10. PhoenixPl podał Ci jak to zrobić, żeby nie robiło tego błędu.
Hunter Opublikowano 13 Grudnia 2008 Opublikowano 13 Grudnia 2008 Czyli musisz po prostu zabezpieczyc sie zmienna, aby alarm nie był co chwile ustawiany.
lenin Opublikowano 13 Grudnia 2008 Opublikowano 13 Grudnia 2008 Można to lepiej zrobić, ale żeby nie mieszać Ci w kodzie to: GML if distance_to_object(player) < 200 { if alarm[0]=-1 alarm[0]=10 } Bo tak jak Ty miałeś, to przy odległości mniejszej niż 200 px alarm wynosił ciągle 10 i się nie odliczał ;p
Dexter12 Opublikowano 13 Grudnia 2008 Autor Opublikowano 13 Grudnia 2008 Dzięki chłopacy wszystko działa! :)
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ę