Skocz do zawartości

Odległośc od danego obiektu


Dexter12

Rekomendowane odpowiedzi

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

Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

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ę

Odnośnik do komentarza
Udostępnij na innych stronach

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

}

Odnośnik do komentarza
Udostępnij na innych stronach

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

Odnośnik do komentarza
Udostępnij na innych stronach

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