[SFML] Podążanie za postacią
Ostatnio zmodyfikowano 2011-07-01 12:16
LukiPRO Temat założony przez niniejszego użytkownika |
[SFML] Podążanie za postacią » 2011-07-01 02:58:40 Witam, mam problem (tak tak kolejny :D)
Chcę aby przeciwnik podążał za graczem. Nie mam zielonego pojęcia jak zacząć.
Myślałem o gracz.GetPosition().x , gracz.getPosition().y oraz wróg.GetPosition().x , wróg.getPosition().y
a potem dać to do jakieś pętli która by zwiększała wartości x oraz y u wroga (lub zmniejszała) lecz gdy tak robię to wróg w mniej niż 1 sekundę się pojawia obok gracza.
Macie jakieś pomysły jak to zrobić?
Z góry dzięki za pomoc oraz Wasz czas. |
|
DejaVu |
» 2011-07-01 03:34:02 Nie robisz pętli tylko co iterację przesuwasz o jakąś wartość przeciwnika. |
|
szyx_yankez |
» 2011-07-01 10:09:11 Można coś takiego zrobić:
float Speed = 500.0f;
WrogX +=( GraczX - WrogX ) / Speed; WrogY +=( GraczY - WrogY ) / Speed;
|
|
waxx |
» 2011-07-01 12:16:56 To bedzie wtedy glupio zwalniac :P
dodaj sobie gdzies w twoichj zbiorach dodatkowych funkcji
sf::Vector2f inline VecNormalize(sf::Vector2f& a)
{
return sf::Vector2f(a.x / sqrt((float)a.x * (float)a.x + (float)a.y * (float)a.y), a.y / sqrt((float)a.x * (float)a.x + (float)a.y * (float)a.y));
}
i potem
float speed = 2.0f;
sf::Vector2f direction = player.GetPosition() - wrog.getPosition();
direction = VecNormalize(direction);
wrog.position += direction * speed;
|
|
« 1 » |