Я пытался заставить столкновение работать с моей маленькой игрой сверху вниз.У меня есть куча сущностей, которые преследуют игрока.Если у меня не будет столкновения, они, очевидно, все окажутся в одном месте.Я знаю, как проверить, не произошло ли столкновение, но я не могу понять, как на него реагировать.У меня получилось немного поработать, просто возиться с ним пару часов, но это не очень хорошо.
if ( check_collision( enemies[e1]->xPos, enemies[e1]->yPos, SIZE_ENEMY, SIZE_ENEMY, enemies[e2]->xPos, enemies[e2]->yPos, SIZE_ENEMY, SIZE_ENEMY ) == true )
{
//the distance that is intersecting
float dx, dy;
if ( enemies[e1]->xPos > enemies[e2]->xPos )
dx = enemies[e2]->xPos + SIZE_ENEMY - enemies[e1]->xPos;
if ( enemies[e2]->xPos > enemies[e1]->xPos )
dx = enemies[e1]->xPos + SIZE_ENEMY - enemies[e2]->xPos;
if ( enemies[e1]->yPos > enemies[e2]->yPos )
dy = enemies[e2]->yPos + SIZE_ENEMY - enemies[e1]->yPos;
if ( enemies[e2]->yPos > enemies[e1]->yPos )
dy = enemies[e1]->yPos + SIZE_ENEMY - enemies[e2]->yPos;
if ( dx < dy )
{
enemies[e1]->xPos += (dx / 2);
enemies[e2]->xPos -= (dx / 2);
}
if ( dy < dx )
{
enemies[e1]->yPos += (dy / 2);
enemies[e2]->yPos -= (dy / 2);
}
}
Возможно, я просто полностью сделал это неправильно, или я мог просто пропуститьНесколько вещей, поэтому любая помощь приветствуется.