Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Kolizja pocisku z ruchomym obiektem

Ostatnio zmodyfikowano 2017-01-25 11:15
Autor Wiadomość
MSSC
Temat założony przez niniejszego użytkownika
Kolizja pocisku z ruchomym obiektem
» 2017-01-16 08:08:22
Witam

Otóż piszę sobie grę typu tower defence i napotkałem dosyc poważny problem: pociski. Otóż udało mi sie zmusić algorytm bresenhaima by zachowanie "rakiet" było w miarę naturalne. Inny problem napotkałem, przy wieżyczkach używających zwykłych pocisków. Jak wiadomo, nie mogą one zmieniać kierunku lotu w locie, a przeciwnik cały czas jest w ruchu. I stąd moje pytanie, czy mógłby ktoś zarzucić jakimś wzorem, lub jeszcze lepiej gotowym kawałkiem kodu, pozwalający na obliczenie toru lotu dla pocisku, przy założeniu, że cel jest ruchomy, a nie można zmienić kierunku po wystrzeleniu? Dziękuję i pozdrawiam ;)

Dodam tylko, że uzywam Allegro5.
P-156483
pekfos
» 2017-01-16 18:06:18
Otóż udało mi sie zmusić algorytm bresenhaima by zachowanie "rakiet" było w miarę naturalne.
A Bresenham po co?

Inny problem napotkałem, przy wieżyczkach używających zwykłych pocisków.
Zwykłych pocisków się w td nie używa. Jak dodasz taki, typowy dla gatunku, efekt spowolnienia wroga, który akurat wystąpi po wystrzale, to pocisk będzie zmarnowany. Chodzi ci o strzelanie do samolotu - celowanie nie gdzie jest, a gdzie będzie, jak pocisk doleci. Te zdanie co cały algorytm, reszta to szczegóły implementacyjne zależne od tego, co robisz w swojej grze. A dokładniej, jak wrogowie się poruszają i czy w ogóle możliwe jest przewidzenie, gdzie wróg będzie po jakimś czasie. Jeżeli dopuszczasz takie nieoptymalności, to zaprojektowanie algorytmu jest proste.
P-156498
DejaVu
» 2017-01-25 11:15:17
Jak chcesz liczyć pocisk to użyj zwykłego równania na prędkość liniową.

C/C++
bullet.position.x += bullet.speed * cos( bullet.angleInRadians );
bullet.position.y += bullet.speed * sin( bullet.angleInRadians );

@pekfos: pocisk nie musi być zmarnowany. Może trafić innego wroga, choć wystrzelenie zostało spowodowane pojawianiem się innego wroga w zasięgu. Takie tower defence też są :)
P-156913
« 1 »
  Strona 1 z 1