Skip to content

Tutorial JPlay Colisões

Lucas S edited this page Apr 28, 2018 · 1 revision

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

Clone this wiki locally