Skocz do zawartości
Markuz

"Strzelanie do obiektów"

Rekomendowane odpowiedzi

Heh to znów ja .. "Rozwiązałem" już problem chodzenia, budowania wierz itp. tworze gierkę typu tower defence, i nie mam pojęcia jak zrobić by:

- Gdy przeciwnik jest w zasięgu wierzy wtedy np. co 2 s odejmuje mu 1 życia

- Żeby nabój leciał w strone przeciwnika, zrobiłem tak że np. leci 100 px opadając, ale nie wiem jak zrobić by ten kierował się w przeciwnika

 

wszystko w 3D heh, prosze o pomoc :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nigdy nie robiłem gier w 3D, ale zasięg bym robił tak.

GML (step)
if(sqrt(power(x-x0,2)+power(y-y0,2)+power(z-z0,2))<xyz&&moze)

{

hp-=1;

alarm[0]=2*room_speed;

moze=false;

}

GML (alarm0)
moze=true;

x, y i z to współrzędne obiektu, a x0, y0 i z0 to współrzędne wierzy. Wzór powyżej to wzór na obliczanie długości odcinka w przestrzeni. Jak nie chcesz aby współrzędne z i z0 były brane pod uwagę, wtedy dostajesz wzór na odległość odcinka na płaszczyźnie. W pierwszym przypadku dostajesz kulę, w drugim okrąg. Zmienna może ma zapobiegać ciągłemu odejmowaniu hp.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Spoko, a jeszcze jedno pytanie jak obliczyć odległość (w px) obiektu 1 od obiektu 2?

 

Edit. i jeszcze jego pytanko heh :

Jak np. nad obiektem 3D wyświetlić napis 2D?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Spoko, a jeszcze jedno pytanie jak obliczyć odległość (w px) obiektu 1 od obiektu 2?

GML
sqrt(power(x-x0,2)+power(y-y0,2)+power(z-z0,2))

Wzór powyżej to wzór na obliczanie długości odcinka w przestrzeni.

Poszukaj jeszcze informacji na temat funkcji, które zaokrąglają liczby do wartości całkowitych.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

sqrt(power(x-x0,2)+power(y-y0,2)+power(z-z0,2)) - ta "funkcja" zwraca mi " " zawsze heh. czemu tak może być? :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

moze przypisz se jej wartosc do jakies zmiennej a czemu sie tak dzieje nie wiem twoj kod zobacz jakie masz x,y,z,x0,y0,z0

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

GML
n=instance_nearest(x,y,obj_enemy)

if distance_to_object(n)<100

{bul=instance_create(x,y,bull)

bul.direction=point_direction(x,y,n.x,n.y)

bul.speed=5}

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×