[?]Obliczanie w którą stronę podążać aby dotrzeć do celu
Ostatnio zmodyfikowano 2013-01-03 19:27
ridic14 Temat założony przez niniejszego użytkownika |
[?]Obliczanie w którą stronę podążać aby dotrzeć do celu » 2013-01-01 20:34:47 Mam już napisane to poruszanie się tak właściwie, lecz jest problem... Gdy moja postać stoi w miejscu to wróg podąża w moją stronę, a gdy przemieszczam się(np krążę w okół) to wróg robi jakieś kółka wokół własnej osi i w ogóle nie próbuje się zbliżyć Obliczam to tak: float result = - atan2( player.y - self.getPosition().y, player.x - self.getPosition().x ) * 180.0 / M_PI;
x =( sin( resulta ) ); y =( cos( resulta ) );
Jeśli ktoś chce sprawdzić(Jak się włączy grę trzeba wcisnąć [.](chwilowe menu pominąć trzeba :D)): http://www.sendspace.pl/file/3943b55752117404ec11b94 |
|
Mrovqa |
» 2013-01-01 20:57:33 x += sin( result ) * speed; y += cos( result ) * speed;
|
|
ridic14 Temat założony przez niniejszego użytkownika |
» 2013-01-01 21:45:16 vel.x = sin( result ) * 2; vel.y = cos( result ) * 2;
Daje taki sam efekt, a nawet jescze większe wibry; Z tym czy bez tego wróg nie podchodzi gdy ja się poruszam |
|
ison |
» 2013-01-01 22:10:32 Kod, który wkleiłeś jest mylący, najpierw obliczasz 'result' a potem z niego w ogóle nie korzystasz, tylko z 'resulta'. x i y to wartości określające przemieszczenie czy pozycję? Bo nie wiadomo jak to interpretować. sin i cos przyjmują radiany, a 'result' jest w stopniach - chociaż nadal nie wiadomo czym jest 'resulta'. |
|
ridic14 Temat założony przez niniejszego użytkownika |
» 2013-01-02 16:53:16 To inaczej: float result = - atan2( player.y - self.getPosition().y, player.x - self.getPosition().x ) * 180.0 / M_PI;
x =( sin( result ) ); y =( cos( result ) );
Więcej: b2Vec2 vel = enemyBody->GetLinearVelocity();
float result = - atan2( player.y - self.getPosition().y, player.x - self.getPosition().x ) * 180.0 / M_PI;
if( ptm( distance ) > to_go && ptm( distance ) < 10 ) { vel.x = sin( result ) * speed; vel.y = cos( result ) * speed; } else vel = b2Vec2( 0, 0 );
enemyBody->SetLinearVelocity( vel );
|
|
ison |
» 2013-01-02 17:37:00 sin i cos przyjmują radiany, a 'result' jest w stopniach |
|
|
ridic14 Temat założony przez niniejszego użytkownika |
» 2013-01-02 17:47:30 Więc napisałem tak: float result = - atan2( player.y - self.getPosition().y, player.x - self.getPosition().x ); daje to efekt następujący: Wróg nawet się nie zbliża tylko krąży wokół :(; |
|
DejaVu |
» 2013-01-02 18:07:57 |
|
« 1 » 2 |