Nessa semana foi adicionado ao programa a Colisão entre as partes, o tipo de colisão é a AABB que pode ser vista no código abaixo:
public bool IsColliding(Vector2 posA, Rectangle sizeA, Vector2 posB, Rectangle sizeB)
{
bool is_objA_to_left_of_objB = posA.X + sizeA.Width < posB.X;
bool is_objA_to_right_of_objB = posA.X > posB.X + sizeB.Width;
bool is_objA_above_objB = posA.Y + sizeA.Height < posB.Y;
bool is_objA_below_objB = posA.Y > posB.Y + sizeB.Height;
return !(is_objA_to_left_of_objB || is_objA_to_right_of_objB || is_objA_above_objB || is_objA_below_objB);
}
A IA foi implementada para o Inimigo_01, o inimigo tem um campo de visão, se esse campo não colidir com o Jogador o inimigo segue o seu movimento natural, se ocorre a colisão, o inimigo segue as coordenadas X e Y do Jogador.
Trecho da IA:
if (!Colisao_Personagem_Campo_Visao)
{
if (Pos_Inimigo_01.X >= 200 && Inimigo_01_Andando_Esquerda)
{
Pos_Inimigo_01 = Inimigo_01.Position;
Pos_Inimigo_01.X -= 1;
Inimigo_01.Position = Pos_Inimigo_01;
}
else if (Pos_Inimigo_01.X < 660)
{
Pos_Inimigo_01 = Inimigo_01.Position;
Pos_Inimigo_01.X += 1;
Inimigo_01.Position = Pos_Inimigo_01;
Inimigo_01_Andando_Esquerda = false;
}
if (Pos_Inimigo_01.X >= 660)
{
Inimigo_01_Andando_Esquerda = true;
}
}
Nenhum comentário:
Postar um comentário