Я создаю игру на С++ и OpenGL и хочу, чтобы противник двигался к игроку.
Каков наилучший способ сделать игровые объекты движущимися к другим игровым объектам, которые работают как в 2D, так и в 3D игровых средах?
UPDATE:
wow благодарит всех за быстрые ответы!
Как ни странно, мне удалось заставить это работать так, как я его разместил
хотя по какой-то причине мне нужно умножить значения x больше, чтобы заставить их двигаться так же быстро, как направление y.
У кого-нибудь есть идеи, почему? или если я делаю неправильно/плохой
float playerX = player.getXPos();
float playerY = player.getYPos();
float enemyX = XPos-*xscroll;
float enemyY = YPos-*yscroll;
glPushMatrix();
glTranslatef(enemyX, enemyY, 0.0);
glColor3f(1.0,0.0,0.0);
glBegin(GL_POLYGON);
glVertex2f(-40,40);
glVertex2f(-40,-40);
glVertex2f(40,-40);
glVertex2f(40,40);
glEnd();
glPopMatrix();
float xDistance = abs(playerX-enemyX);
float yDistance = abs(playerY-enemyY);
if((playerX - enemyX)*(playerX - enemyX)+(playerY - enemyY)*(playerY - enemyY) < 400*400){
float heading = asin(xDistance/yDistance);
if(playerY > enemyY){
YPos += timeFactor*(200*(sin((90+heading)*(PI/180.0f))));
}else{
YPos += -(timeFactor*(200*(sin((90+heading)*(PI/180.0f)))));
}
if(playerX > enemyX){
XPos += -(timeFactor*(10000*(cos((90+heading)*(PI/180.0f)))));
}else{
XPos += timeFactor*(10000*(cos((90+heading)*(PI/180.0f))));
}
}