Skocz do zawartości

Niedziałająca przeszkoda


eragon16

Rekomendowane odpowiedzi

Ustawiłem na końcach mapy ograniczniki w postaci obiektów które powinny być elementem którego ludziki nie mogą przejść.

Niestety mimo tego, że robiłem to według poradnika, przeszkoda nie działa gdyż gracz swobodnie może przechodzić przez nią.

Może coś było źle w poradniku... Może ktoś napisać jak zrobić aby na 100% działało?

Odnośnik do komentarza
Udostępnij na innych stronach

a nie prościej zrobić warunek:

GML
if(round(x)==room_width || round(x)==0 || round(y)==room_height || round(y)==0) speed=0

poza tym znając życie pewnie zapomniałeś w ograniczniku dać solid

E. albo jeszcze prościej Intersect Boundary w other i dać speed 0 o ile oczywiście masz poruszanie oparte na zmiennej speed

Odnośnik do komentarza
Udostępnij na innych stronach

a nie prościej zrobić warunek:

GML
if(round(x)==room_width || round(x)==0 || round(y)==room_height || round(y)==0) speed=0

poza tym znając życie pewnie zapomniałeś w ograniczniku dać solid

 

Dodałem solid.

I mnie zdziwiło czemu nie działa.

 

Spróbuje twoim sposobem.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if(round(x)==room_width || round(x)==0 || round(y)==room_height || round(y)==0) speed=0
niejest odporny na bled programatora. v sumie oczekuje ruch po x nievielky lub nieprzekraczajocy room_width(i height)

povinno byc:

GML
if(round(x)>room_width-sprite_get_width(sprite_index) || round(x)<0 || round(y)>room_height-sprite_get_height(sprite_index) || round(y)<0) {x=xprevious;}

natomiast zatrzymyvanie o objekt mozna zrobic:

GML
if (place_meeting(x,y,o_blok) ) { x = xprevious; };
ale pozostaje problem z dojazdem ku przeskodzie o_blok na 1 pixel.

 

zatem lepszy kod jest:

GML
if (place_meeting(x,y,o_blok) ) {

var __xtemp, __sign;

__xtemp=0;

__sign=sign(x-xprevious);

 

repeat(abs(x-xprevious)) {

if (place_meeting(xprevious+(__xtemp+1)*__sign,y,o_blok) ){x=xprevious+(__xtemp*__sign); break; };

__xtemp+=1;

}

};

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