Colisões
Para descobrir se um objeto colidiu com outro você pode usar o método que está presente em todas as classes.
//Retorna true se houve colisão, ao contrário, retorna false. public boolean collided(GameObject);
Também se pode verificar se houve uma colisão usando a classe estática Collision, com o método
boolean collided(GameObject obj1, GameObject obj2);
Exemplo:
if( Collision.collided(barcoAmarelo, barcoVermelho) == true) imprime("colidiram");
A classe Collision pode ser usada para verificar colisão entre quaisquer um dos objetos: GameObject, GameImage, Animation, Sprite.
Exemplo: Verificando colisões entre objetos.
package Colisao001; import jplay.Animation; import jplay.GameImage; import jplay.Window; import jplay.Sprite; /** * @author Gefersom Cardoso Lima * Federal Fluminense University * Computer Science */ public class Colisao001 { //At the time the bird colliding with the rock it explodes public static void main(String[] args) { Window janela = new Window(800,600); GameImage pedra = new GameImage("pedra.png"); pedra.x = 396; pedra.y = 63; GameImage ceu = new GameImage("ceu.png"); Sprite passaro = new Sprite("passaro.png", 3); passaro.setTotalDuration(360); Animation explosao = new Animation("explosao.png",20); explosao.setTotalDuration(1400); explosao.setLoop(false);//The animation will run only once. passaro.x = 100; passaro.y = 460; boolean colidiu = false; while(true) { ceu.draw(); pedra.draw(); if (colidiu == false) { passaro.draw(); passaro.update(); passaro.moveTo(600, passaro.y, 0.8); if (passaro.collided(pedra)) { colidiu = true; System.out.println(explosao.width); explosao.x = passaro.x - 70; explosao.y = passaro.y - 50; } } else { explosao.update(); explosao.draw(); } if (explosao.isPlaying() == false && colidiu == true) explosao.hide(); janela.update(); janela.delay(10); } } }
UFF - Universidade Federal Fluminense - Institudo de Computação - Ciência da Computação