Skocz do zawartości

Prosty raycaster do wykrywania współrzędnych obiektów.


TrooP

Rekomendowane odpowiedzi

Sytuacja wygląda tak: Ptak leci nad jakimś terenem generowanym z kostek. W momencie kiedy gracz kliknie chciałbym, żeby z kostką bezpośrednio pod ptakiem coś się działo (np. pęka i znika). Tak naprawdę potrzebuje współrzędnej kostki, która jest najbliżej ptaka, ale bezpośrednio pod nim ponieważ może być sytuacja, że ptak lecąc obok góry będzie miał bliżej (jeśli użyjemy instance_nearest) szczyt tej góry niż kostkę poniżej. Póki co najbliżej rozwiązania byłem wystrzeliwując obiekt w dół z prędkością x+=100 do momentu zetknięcia się z kostką, ale jest to bardzo mało precyzyjne, ponieważ przy takiej prędkości kolizja z kostką czasem nie zachodzi czasem zachodzi z kolejną itp.

 

Ma ktoś jakiś pomysł? Chodzi mi raczej o coś prostego.

Odnośnik do komentarza
Udostępnij na innych stronach

Tak mam pozycję x,y ptaka, ale kostki są ułożone jak w Terrari czyli wiele na sobie. jeśli wezmę pozycję x kostki to jest ich powiedzmy 10. Rozumiem, że potem mogę sprawdzać pozycję y i najmniejsza to będzie ta jedyna, ale przy 400 kostkach na ekranie nie chcę do nich "wkładać" kodu, który sprawdza ich aktualną pozycję - no chyba że inaczej się nie da ale nie wierzę.

Odnośnik do komentarza
Udostępnij na innych stronach

jesli kostky so naprz 32pix, ale ptak leci y+=1(lub cos tam), wystarzcy ze bezdzie wybrana 1 kostka z dwoch?

w chwili kiedy ptak przekracza granice miedzy kostkami, jest wiecej mozliwych zadan co ma sie robic :)

 

krajina kostkowa jest chyba neskonczona i przesuwa sie na przeciw ptakowi, niemyle sie?

 

ogolnie to chyba uzylbym ds_ structury do przechowania pozycji top kostek i porownywal o_ptak.x z pozycjo w ds_ structurze

 

mozna by tez uzyc testow jak:

- position_meeting(x,y,obj)

albo

- collision_point(x,y,obj,prec,notme)

 

Odnośnik do komentarza
Udostępnij na innych stronach

GML
yy=0

do

{

i=instance_position( x, y+yy, obj );

yy+=16 //wysokość bloczka

}

until(i<0)

//i to twoja instance</span>

 

ps: Pierwszego postu tak nie zrozumiałem że wydawało mi się że chcesz to zrobić w 3D. W 2D wystarczy Ci tylko x.

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