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

[SFML] Podążanie za postacią

Ostatnio zmodyfikowano 2011-07-01 12:16
Autor Wiadomość
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.
P-35065
DejaVu
» 2011-07-01 03:34:02
Nie robisz pętli tylko co iterację przesuwasz o jakąś wartość przeciwnika.
P-35066
szyx_yankez
» 2011-07-01 10:09:11
Można coś takiego zrobić:
C/C++
float Speed = 500.0f;
//float WrogX/Y

WrogX +=( GraczX - WrogX ) / Speed;
WrogY +=( GraczY - WrogY ) / Speed;
P-35071
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;
P-35080
« 1 »
  Strona 1 z 1