Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

Mam pytanie:

Załóżmy sytuację, w której mamy dwa obiekty o nazwie obj0. Po ich kliknięciu lpm zachodzi

GML
score+=1
.

Ale jeśli nałożymy je jeden na drugi (całkowicie bądź częściowo) to po kliknięciu na obszar, w którym "leżą" one na sobie, dostajemy punktów dwa. W jaki sposób można prosto sprawić, aby reagował tylko obiekt na wierzchu, zaś te przykryte (o ile zostaną kliknięte na zakryty fragment) już nie???

Opublikowano

Zmienna "score" jest zmienną globalną. Użyj zmiennej dla każdego obiektu, np. "punkty". Następnie w zdarzeniu kliknięcia myszą na obiekt daj:

 

punkty -= 1;

Opublikowano

To był tylko przykład, bo chodzi o skomplikowany kod, więc podałem na przykładzie punktów. No i nie chcę za zbytnio zdradzać nad czym teraz pracuję :D

Opublikowano

Tylko chodzi mi o to, że Borek podał jako rozwiązanie mojego problemu zamianę globalnej score na lokalną punkty. Niestety nie mogę w ten sposób tego zamienić w przypadku mouse_x :/

 

Po prostu chodzi mi o to, żeby obiekt reagował na kliknięcie myszą, tylko jeśli kursor jest "bezpośrednio nad nim".

Opublikowano

Z Twojej odpowiedzi nic nie wynika.

Więc zapytam po raz kolejny. Jak wybierzesz obiekt który jest na wierzchu jeśli oba mają ten sam depth?

Opublikowano

no kurde tłumaczyć jak dziecku... Bierzesz 2 obiekty... każdy takie same, losujesz w create depth, sprawdzasz czy te obiekty po id maja taki sam depth jeżeli tak to losujesz znów, potem w evencie on mouse sprawdzasz który ma najmniejszy depth i temu właśnie dodajesz punkty. Nie mam tu gma, bo bym Ci pokazał na przykładzie...

Opublikowano

Harrrry, bez sensu.

Pieter, dalej bez sensu. Masz listę obiektów o ustalonym depth. Kilka z nich ma te same wartości. Co robisz?

Opublikowano

a dużo zamierzasz mieć tych obiektów?

jak nie to:

GML
while( true )

{

depth = round( random( 9999999999 ))

for( i = 0; i <= instance_count( obiekt ); i += 1 ) if ( instance_find( obiekt , i ). depth = depth )

{

break;

continue

}

break

}

Opublikowano
Harrrry, bez sensu.

Wiem że bez sensu ale lepiej niż z depthami bo id masz zawsze unikalne...

Ale ja bym to zrobił tak że w obj_cursor dał bym Glob left button i kod:

GML
with(obj0) if collision_point(blabla,bla,bla...)

{

score+=1;

break;

}

Opublikowano

Ale ja chcę obiekt "najwyższy" o obojętnie jakim depth, znaczy czy unikalnym czy nie. Byle był zawsze "najwyższym".

Opublikowano

GML
min_id = 0 //zmienna przechowuje id obiektu z najmniejszym depth

for( i = 0; i < instance_number( obiekt ); i += 1 )

{

ID. instance_find( obiekt , i )

if ( ID.x = mouse_x and ID.y = mouse_y ) //jeśli obiekt znajduje się w poz myszki (=P)

{

if ( ID < min_id ) min_id = ID

}

}

with( min_id ) punkty += 1

Tymcio dobrze? ;)
Opublikowano

Ale ja chcę DEPTH. A nie obiekt o najmniejszym ID.

Pieter, a co to była by za zabawa jakbym podał gotową odpowiedź? :D

Opublikowano
a nie można po prostu zrobić:
GML
depth = -id
na pewno się nie powtórzy, bo id jest UNIKALNE. I obiekt najpóźniej tworzony będzie bardziej na wierzchu.
a czytałeś to? :P najnowszy obiekt ma najniższy depth.

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