kolizja koła z prostokątem - tower defense
Ostatnio zmodyfikowano 2017-11-10 17:37
DejaVu |
» 2017-11-04 09:37:46 Jeżeli chcesz obejmować 'nogi' to po prostu dodaj promień zasięgu + wysokość kwadratu podzieloną przez 2. Wówczas nogi też obejmiesz. /edit: W każdym razie odpowiedzią na Twoje pytanie zapewne jest metoda: bool Tower::isInRange( const std::shared_ptr < Enemy >& _enemy ) const { return ddt::core::Math::distanceSquare( m_position, _enemy->getPosition() ) < float( m_pxRange ) * m_pxRange; }
|
|
latajacaryba Temat założony przez niniejszego użytkownika |
» 2017-11-04 19:26:01 Problem w tym, że to nie kwadrat, ale prostokąt. To oznacza, że ten pomysł nie zawsze będzie działał, np przypadek poniżej: https://zapodaj.net/c56e8fb99b5e4.png.htmlczerwony - faktyczny zasięg niebieski - faktyczny zasięg + h/2 |
|
DejaVu |
» 2017-11-05 18:35:07 Z punktu widzenia rozgrywki problem, który opisujesz będzie niezauważalny. Poza tym i tak najwygodniej się robi kolizje na okręgach. Mało zachodu i stosunkowo wysoka precyzja w ogólnym przypadku. |
|
RazzorFlame |
» 2017-11-10 17:37:44 Tutaj wystarczy sprawdzić czy zasięg wieży dosięga do któregos z czterech wierzchołków. |
|
1 « 2 » |