Estou fazendo o joguinho Breakout/Arkanoid.
Eu consegui fazer os gráficos e até parte da lógica. Porém, do jeito que fiz, se um tijolo for indestrutivel e a bola tocar no lado dele, a bola buga. Se o tijolo for normal, "não buga"; isto acontece pois o tijolo é destruido e não faz mais parte do jogo, então a bola corre livremente pelo espaço que o tijolo ocupava.
"não buga" --> Na verdd buga, mas é tal rápido que é imperceptível.
Eu gostaria de uma ajuda para bolar um jeito de conferir em que lugar a bola toca no tijolo.
_______
|______| <--------- LADO DO TIJOLO
Método da colisão:
Código:
public bool Collide( Sprite sprite ) {
if( this.position.X + this.texture.Width > sprite.position.X &&
this.position.X < sprite.position.X + sprite.texture.Width &&
this.position.Y + this.texture.Height > sprite.position.Y &&
this.position.Y < sprite.position.Y + sprite.texture.Height )
return true;
else
return false;
}
Quando a bola toca o tijolo eu faço:
Onde Position e Speed são Vector2, e são a posição e velocidade da bola, respectivamente.
Código:
if(this.ball.Collide(this.bat)) {
this.ball.Position -= this.ball.Speed;
this.ball.Speed *= new Vector2( 1f, -1f );
}
[/code]