Skocz do zawartości

Zaznaczanie


Rekomendowane odpowiedzi

Mam w jednym roomie pięć objectów orc. Jak kliknę na jednego to jego zmienna zaznaczony = true. Chciałbym zrobić tak zeby po ponownym kliknieciu na inny object orc niz ten zaznaczony zaznaczenie tego pierwszego znikalo(zaznaczony = false). Ale wtedy sie odznacza odrazu jak klikam, czyli poprostu zmienia zmienna zaznaczony na true ale tylko na sekunde(lub nawet mniej). A drugie pytanie to: Jak zrobić rysowanie zielonego prostokata do zaznaczania, tak zeby kazdy object wewnatrz niego zmienial zmienna zaznaczony na true. Czyli poprostu zaznaczanie jak w grach strategicznych.

 

 

ps. Przepraszam za dwa tematy jeden po drugim :unsure:

Odnośnik do komentarza
Udostępnij na innych stronach

W global mouse pressed daj zaznaczony = false; a dla zwykłego mouse pressed zaznaczony = true;. Za każdym kliknięciem myszki wszystkie jednostki zostaną odznaczone i zaznaczona zostanie tylko ta, na której jest myszka. Co do prostokąta, polecam zrobić jakiś obiekt kontrolny, w którym dałbyś tak:

 

Create:

GML
xx = 0;

yy = 0;

 

Step:

GML
if( mouse_check_button_pressed( mb_left ) ){

xx = mouse_x;

yy = mouse_y;

}

if( mouse_check_button_released( mb_left ) )

{

with( obj_jednostka )

{

if( x >= min( other.xx, mouse_x ) && x <= max( other.xx, mouse_x ) && y >= min( other.yy, mouse_y ) && y <= max( other.yy, mouse_y ) )

zaznaczony = true;

else zaznaczony = false;

}

}

 

Draw:

GML
if( mouse_check_button( mb_left ) )

draw_rectangle( xx, yy, mouse_x, mouse_y, true );

 

Zrób też nowy obiekt, nazwij go obj_jednostka i dla każdej jednostki ustaw go jako parenta.

Odnośnik do komentarza
Udostępnij na innych stronach

Akurat pracuję nad RTS wiec Co pomogę.

W create jedn daj zmienną zaznaczona=false;

w left presed zaznaczona=true;

w global left button zaznaczona=false;

 

i tak w kazdej jednostce;

 

 

Co do kwadrata to zrobiłem tak-

Zrób obj_rys

 

CREATE

GML
global.xx1=0

global.yy1=0

global.xx2=0

global.yy2=0

 

GLOBAL LEFT BUTTON

GML
global.xx2=mouse_x

global.yy2=mouse_y

 

GLOBQAL LEFT PRESSED

GML
global.xx1=mouse_x

global.yy1=mouse_y

 

GLOBAL LEFT RELEASED

GML
global.xx1=0

global.yy1=0

global.xx2=0

global.yy2=0

 

DRAW

GML
draw_rectangle(global.xx1,global.yy1,global.xx2,global.yy2,1)

 

 

TERAZ W STEP JEDNOSTKI

GML
// ZAZNACZANIE KWADRATEM

if collision_rectangle(global.xx1,global.yy1,global.xx2,global.yy2,id,1,0)

{

 

zaznaczona=true

 

}

Odnośnik do komentarza
Udostępnij na innych stronach

Akurat pracuję nad RTS wiec Co pomogę.

W create jedn daj zmienną zaznaczona=false;

w left presed zaznaczona=true;

w global left button zaznaczona=false;

 

i tak w kazdej jednostce;

 

 

Co do kwadrata to zrobiłem tak-

Zrób obj_rys

 

CREATE

GMLglobal.xx1=0

global.yy1=0

global.xx2=0

global.yy2=0

 

GLOBAL LEFT BUTTON

GMLglobal.xx2=mouse_x

global.yy2=mouse_y

 

GLOBQAL LEFT PRESSED

GMLglobal.xx1=mouse_x

global.yy1=mouse_y

 

GLOBAL LEFT RELEASED

GMLglobal.xx1=0

global.yy1=0

global.xx2=0

global.yy2=0

 

DRAW

GMLdraw_rectangle(global.xx1,global.yy1,global.xx2,global.yy2,1)

 

 

TERAZ W STEP JEDNOSTKI

GML// ZAZNACZANIE KWADRATEM

if collision_rectangle(global.xx1,global.yy1,global.xx2,global.yy2,id,1,0)

{

 

zaznaczona=true

 

}

 

 

no tak ale przecierz gdy klikam to poprostu się rysuje a ja bym chciał żeby ten kwadrat powiększał/pomniejszał za myszką tak długo dopóki nie puszczę

Odnośnik do komentarza
Udostępnij na innych stronach

Obiekt zanacz:

GML
xx = x

yy= y

tryb = 0

Global Left Pressed:

GML
xx = mouse_x

yy = mouse_y

tryb = 1

Global Left Released:

GML
tryb = 0

Step:

GML
if(tryb = 1)

with(all)

if(variable_local_exists('zaznaczona))

if(collision_rectangle(zanacz.x,zanacz.yy,mouse_x,mouse_y,self,false,false)) zaznaczona = 1 else zaznaczona = 0</span>

Draw:

GML
draw_set_color(c_white)

draw_rectangle(xx,yy,mouse_x,mouse_y,true)

Sadze, ze nie bedzie dzialac, jesli nie, to zdefiniuj skrypt 'pole', ktory bedzie sprawdzal, czy obiekt znajduje sie w danym prostokacie.

Odnośnik do komentarza
Udostępnij na innych stronach

Masz tu przykład zaznaczenia jednostki:

Przyklad

Zawsze najlepiej się uczy na przykładach :)

 

 

ok. jakoś poszło, (nie pytaj...) i wszystko okej wielkie dzięki kocham cię! Ale mam również skrypt w step

 

if zaznaczony = true

{

sound_play(choose(What1,What2,What3,What4))

}

ale jak jest zaznaczony to tak nawija wszystko naraz i bez przerwy, tak długo jak jest zaznaczony a miałobyć jednorazowo, jak to zrobić!?

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