[SFML] Błąd kolizji podczas ruchu
Ostatnio zmodyfikowano 2015-01-04 01:44
koszar93 Temat założony przez niniejszego użytkownika |
[SFML] Błąd kolizji podczas ruchu » 2015-01-03 01:17:51 Jeżeli postać główna wejdzie w przeciwnika to przeciwnik idzie w przeciwną stronę. Działa mi to jednak tylko wtedy gdy postać główna stoi w miejscu. Niestety podczas ruchu obu obiektów "wchodzą" na siebie i dopiero ruszenie postaci powoduje zejście z wroga. Fragment kodu: if( checkCollision( p.sprite, enemy->sprite ) ) { if( enemy->dx > 0 ) enemy->dx = - enemy->speed; else if( enemy->dx < 0 ) enemy->dx = enemy->speed; }
W checkCollision sprawdzam kolizję w każdym z rogów boxa. Da się temu jakoś zaradzić? |
|
DejaVu |
» 2015-01-03 12:30:22 Sprawdzaj kolizje prostokątów, a nie kolizje punktów. |
|
kubawal |
» 2015-01-03 15:20:25 sf::Rect<T>::intersects(Rect&) |
|
koszar93 Temat założony przez niniejszego użytkownika |
» 2015-01-04 00:43:21 Jeśli chodzi o if( p.rect.intersects( enemy->rect ) ) to niestety ale problem jest ten sam, o ile stoję w miejscu a wróg wejdzie we mnie to odbicie działa i odchodzi ode mnie jednak gdy postacią jestem w ruchu i wejdę w wroga to mogę sobie przez Niego przejść z lekkim lagiem... |
|
bnk120 |
» 2015-01-04 01:13:25 if( enemy->dx > 0 ) enemy->dx = - enemy->speed; else if( enemy->dx < 0 ) enemy->dx = enemy->speed;
Dlaczego porównujesz pozycję enemy z 0, a nie z Twoją główną postacią? Poza tym, co się stanie gdy pozycja enemy wynosić będzie 0 w przypadku zajścia kolizji? |
|
koszar93 Temat założony przez niniejszego użytkownika |
» 2015-01-04 01:44:57 if( enemy->dx > p.dx ) enemy->dx = - enemy->speed; else if( enemy->dx < p.dx ) enemy->dx = enemy->speed;
jednak nadal mogę wejść we wroga... |
|
« 1 » |