Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

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

Opublikowano

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 )

Opublikowano

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ć :/

Opublikowano

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...*

Opublikowano

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ę

Opublikowano

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

}

Opublikowano
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).
Opublikowano

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.

Opublikowano

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...