Desde a semana passada, pouca coisa mudou no jogo, foi acrescentado um cenário e melhoradas algumas partes do código que estavam dando alguns bugs na animação, a cara do jogo nesse momento está assim:
Estamos enfrentando alguns problemas na atualização do HP, mas o mesmo deverá ser resolvido essa semana. O HUD também está sendo construído e em algumas semanas já estará implementado.
quinta-feira, 17 de maio de 2012
quinta-feira, 10 de maio de 2012
Atualização 10-05
Essa semana o código passou por uma refatoração e as classes estão totalmente separadas e funcionando corretamente, o visual nesse momento está assim:
Foi adicionado um texto para "Debug" assim poderíamos verificar se as variáveis estão funcionando corretamente.
Algumas alterações na animação ocorreram, a animação do ataque ficou assim:
E foi adicionado um inimigo (Inimigo01), o qual é possível ver na primeira imagem (personagem Cinza).
Foi adicionado um texto para "Debug" assim poderíamos verificar se as variáveis estão funcionando corretamente.
Algumas alterações na animação ocorreram, a animação do ataque ficou assim:
A animação da "morte" ficou assim:
E foi adicionado um inimigo (Inimigo01), o qual é possível ver na primeira imagem (personagem Cinza).
terça-feira, 1 de maio de 2012
HP, Colisão, Classes
HP
Essa semana foi implementado o HP, parte visual, no inimigo e no jogador principal. A perda do HP ocorre nas seguintes situações:
- O jogador colide com o inimigo e perde 25.
- O jogador colide com o inimigo, mas está atacando, o inimigo perde 25.
Essa perda é somente visual, ao inicializar o HP, é desenhado na tela -25 na posição atual do objeto e esse valor vai mudando sua posição em Y a cada update em um determinado tempo; ao fim desse tempo o -25 não é mais desenhado na tela.
Colisão
O código da colisão foi melhorado, ao ocorrer a colisão, ele fará a verificação de quem está perdendo HP, o objeto que está perdendo o HP recuará 100 pixels, não importando a posição e ordem dos objetos, por exemplo, se o jogador está sofrendo o ataque ele fará o seguinte calculo:
if (Colisao_Personagem_Inimigo_01 && !Personagem_Esta_Atacando)
{
Pos_Personagem = Jogador_Principal.Position;
if (Personagem_esta_a_esq)
{
Pos_Personagem.X = Pos_Personagem.X - 100;
}
else
{
Pos_Personagem.X = Pos_Personagem.X + 100;
}
Jogador_Principal.Position = Pos_Personagem;
}
Organização das classes
Estamos enfrentando alguns problemas para separar todas as classes, primeiramente o código foi feito todo no Game1.cs, assim era possível testar se o código estava funcionando corretamente. Ao separar as classes encontramos um problema, ele não está atualizando as posições dos "Vector2", por exemplo, na classe IA.cs, o inimigo começa na posição (660, 175) e vai diminuindo em 1, em X, a cada Update, ao chegar na posição (200,175) o inimigo deve aumentar em 1, em X, na classe Game1.cs o código funciona perfeitamente, porém ao fazer a adaptação na classe IA.cs, o inimigo vai diminuindo 1, em X, "eternamente", esse foi o problema principal encontrado e estamos trabalhando para remover esse Bug.
quinta-feira, 19 de abril de 2012
Colisão e IA
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;
}
}
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;
}
}
quinta-feira, 12 de abril de 2012
quinta-feira, 5 de abril de 2012
Teste da animação do Personagem
Após algumas conversas optamos pelo método "Entity" para realizar as animações do jogo, seja do personagem, inimigos, objetos ou até mesmo o Background.
O programa foi todo realizado no Game1.cs, pois os testes seriam mais confiáveis, e os resultados mais próximos do desejado. Não usamos os sprites originais ainda, pois estes ainda estão em desenvolvimento.
Estado "Idle"

Estado "Jump"
O programa foi todo realizado no Game1.cs, pois os testes seriam mais confiáveis, e os resultados mais próximos do desejado. Não usamos os sprites originais ainda, pois estes ainda estão em desenvolvimento.
Estado "Idle"
Estado "Walk"
Estado "Jump"
quarta-feira, 4 de abril de 2012
SVN e parte Gráfica
Enfrentando alguns problemas para continuar com a programação devido à problemas relacionados ao SVN, assim que for resolvido será implementado as outras classes. A parte gráfica já foi iniciada, alguns esboços do personagem foram feitos.
Assinar:
Postagens (Atom)










