Skocz do zawartości

Ograniczenie ruchu i inne


Raik

Rekomendowane odpowiedzi

Siemanko, mam problem z ograniczeniem prędkości ruchu w tym skrypcie bo wszystko się dzieje natychmiast, średnio zrozumiałem timery a pewnie tutaj by się przydały.

Liczę na pomoc :D.

GML
if(mouse_check_button_released(mb_right)&&targeted)

{

xx=mouse_x;

yy=mouse_y;

while(distance_to_point(xx,yy)>32)

{

mp_potential_step(xx,yy,v,false);

}

}

skrypt ma po prostu sprawić że obiekt pójdzie do danego punktu omijając przeszkody co robi (gdy pozbędę się while a w stawie if i klikam myszką jak powalony XD)

Odnośnik do komentarza
Udostępnij na innych stronach

Zależy, co chce zrobić:

1. ma poruszać się tylko, gdy kliknięty jest RMB:

GML
//Event Step

if(mouse_check_button(mb_right)&&targeted)

{

xx=mouse_x;

yy=mouse_y;

if(distance_to_point(xx,yy)>32) mp_potential_step(xx,yy,v,false);

}

2. kliknięcie ma tylko wybierać cel, do którego obiekt ma się dostać, sam obiekt ma cały czas się poruszać, dopóki nie dotrze do celu:

GML
//Global RMB button released

if targeted

{

xx=mouse_x;

yy=mouse_y;

}

GML
//Event Step

if(distance_to_point(xx,yy)>32) mp_potential_step(xx,yy,v,false)
Odnośnik do komentarza
Udostępnij na innych stronach

Miał się poruszać do momentu aż osiągnie cel od wciśnięcia rpm, dziękuje teraz działa :D. W sumie debil jestem że while dałem w drawie i pomyślałem sobie że tam jakieś przerwy będą XD

 

Dzięki :)

 

W sumie to ogólnie debil jestem XD

EDIT:

Pomyślałem że popytam tu o wszystkie głupostki żeby forum nie zaśmiecać, a więc :

Teraz to w sumie mam nowy problem, mam ten kod w evencie na puszczenie prawego przycisku myszki, partia po else działa, warunek z shiftem nie, jakieś pomysły :D ?

GML
if(keyboard_check_pressed(vk_shift))targeted=true;

else

{

with(all){targeted=false};

targeted=true;

}

EDIT2:

Nie ważne, nie wiedziałem że pressed dotyczy samej akcji wciśnięcia xd

Odnośnik do komentarza
Udostępnij na innych stronach

Siemanko, kolejne pytanie :D, najpierw kod,pewnie coś zwaliłem z alarmem:

GML
if(mine_obj!=noone&&distance_to_object(mine_obj)<11)

{

if(alarm[0]==-1)

{

mine_obj.dest_time=mine_obj.dest_time-mine_str;

instance_create(mine_obj.x,mine_obj.y,par_mining);

alarm[0]=(mine_v+1)*room_speed;

}

}

Skrypt ma powtarzać po prostu akcje co 6 sekund i tyle, zrobi się to raz i potem nie powtarza, jakieś pomysły co jest nie tak ?

Odnośnik do komentarza
Udostępnij na innych stronach

mialo by dzialac.

sprawdz if(mine_obj!=noone&&distance_to_object(mine_obj)<11) jesli sie vykonuje true

albo zle ustawiasz czas alarmu v alarm[0]=(mine_v+1)*room_speed; jesli wogule wytworzy sie instancja, chocby na 1 cykl(tego okiem niewidac to sproboj debugera)

 

Odnośnik do komentarza
Udostępnij na innych stronach

Instancja się tworzy, mine_v jest ustawione na 5. Cały skrypt się wykonuje bez alarmów tzn:

GML
if(mine_obj!=noone&&distance_to_object(mine_obj)<11)

{

mine_obj.dest_time=mine_obj.dest_time-mine_str;

instance_create(mine_obj.x,mine_obj.y,par_mining);

}

Tak działa, tylko że super szybko

Odnośnik do komentarza
Udostępnij na innych stronach

Właśnie tak zrobiłem i działa, myślałem że nic nie musi tam być :D. Mam kolejne pytanie, na temat draw. Mam skrypt który na podstawie tego co mam na mapie rysuje mi bzdety (jak krawędzie itp.) i gdy mam za dużo tych elementów to gra oczywiście zwalnia bo tyle tego wszystkiego na raz w tym drawie do zrobienia. Moje pytanie wygląda tak, czy da się np. wywołać raz tego drawa i gdy np chce go odświeżyć, a w innych przypadkach nie ? Bo jak w drawie daje warunek by nie rysowało cały czas to oczywiście elementy po prostu znikają.

W sumie poradziłem sobie w taki sposób:

EDIT:

GML
if(x>Viewfollow.x-360&&x<Viewfollow.x+360&&y>Viewfollow.y-280&&y<Viewfollow.y+280)

{

Rysuj_Klocek(B_R,B_G_R,B_K,Obsydian,Sciana);

}

Gdzie viewfollow to obiekt który chodzi za viewem ciekawi mnie tylko czy jest jakiś lepszy sposób :D

Odnośnik do komentarza
Udostępnij na innych stronach

1, mozesz sprobowac z surface by niebylo trzeba rysowac kazdy cykl kazdy object. bo co sie niezmienia to moze byc na surface

 

2, wyjotkowo mozna by uzyc

set_automatic_draw(value) Indicates whether to automatically redraw the room (true, default) or not (false).

screen_redraw() Redraws the room by calling all draw events.

screen_refresh() Refreshes the screen using the current room image (not performing drawing events).

pozwolic redraw tylko co x cykli. ale jesli to jest dobry pomysl zalezy od animacji gry

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