Skocz do zawartości
Exigo

"Przeskakiwanie" obiektu.

Rekomendowane odpowiedzi

Załóżmy że jest obiekt. Obiekt ten jest pociskiem o wysokiej 'prędkości'. Istnieje też drugi obiekt. Jest to ściana. Pocisk powinien ze ścianą kolidować... no ale niestety wysoka prędkość powoduje, iż obiekt 'przeskakuje' przez co nie dochodzi do kolizji... Jak rozwiązać ten problem?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Sprawdzać kolizję w stepie, sprawdzając np. 10 punktów w linii od xprevious/yprevious do x/y.

Albo użyć collision_line, jeśli obiekt to jakiś mały pocisk.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

ewentualnie zmniejsz prędkość pocisku i zwiększ room_speed. Podobno to też pomaga

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

lenin: To logicznie myśląc musi pomóc :P Ale zależy, jaka to gra. Może ta gra wyrabia maks 30FPS?

 

I topic: (piszę z pamięci, nie sprawdzałem ;P Ale powinno zadziałać...)

GML (objpocisk Create)
old_x = x;

old_y = y;

GML (objpocisk Step)
if(speed > 0) //Czy pocisk się rusza...

{

if(collision_line(x, y, old_x, old_y, obj_sciana, 1, 1)) //Nie pamiętam, jakie dokładnie argumenty ma ta funkcja :P Także sprawdź...

{

instance_destroy();

}

}

 

//Tutaj inne instrukcje....

old_x = x; //A to na końcu stepa. Ewentualnie w End Step...

old_y = y;

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

×