Kolizja pocisku z ruchomym obiektem
Ostatnio zmodyfikowano 2017-01-25 11:15
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. |
|
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. |
|
DejaVu |
» 2017-01-25 11:15:17 Jak chcesz liczyć pocisk to użyj zwykłego równania na prędkość liniową. 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ą :) |
|
« 1 » |