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

[SFML] Błąd kolizji podczas ruchu

Ostatnio zmodyfikowano 2015-01-04 01:44
Autor Wiadomość
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:
C/C++
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ć?
P-123899
DejaVu
» 2015-01-03 12:30:22
Sprawdzaj kolizje prostokątów, a nie kolizje punktów.
P-123907
kubawal
» 2015-01-03 15:20:25
sf::Rect<T>::intersects(Rect&)
P-123930
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...
P-124043
bnk120
» 2015-01-04 01:13:25
C/C++
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?
P-124052
koszar93
Temat założony przez niniejszego użytkownika
» 2015-01-04 01:44:57
C/C++
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...
P-124057
« 1 »
  Strona 1 z 1