• Criando um Sprite e setando suas configurações( atributos, posição, rotação e movimento)

    1 - Criando um Sprite

    Para se criar um sprite basta criar um objeto da classe Sprite e passar como parâmetro O diretório de sua imagem.

    								Sprite nave = new Sprite(“nave.png”);
    							

    2 - Setando configurações

    A classe Sprite foi modificada, sendo adicionado novos atributos como mass, friction, restitution. Todas elas são configuradas chamando seus métodos correspondentes. setMass, setFriction, setRestitution. E para retornarem o valor são chamados os métodos: getMass, getFriction e getRestitution.

    nave.setMass(1f);
    nave.setFriction(0.2f);
    nave.setRestitution(0f);
    Obs: Os valores passados como parametro devem ser do tipo float. Os valores Padrões são de 0.5 cada um deles, ou seja, caso não seja setado algum deles, este terá como valor padrão 0.5.

    3 - Posição e Rotação

    Os métodos utilizados no posicionamento do sprite são setX, setY. E para retornar o valor de suas posições são utilizados os métodos getX e getY.

    nave.setX(200);
    nave.setY(100);
    Obs: Embora a classe Sprite tenha acesso aos atributos x e y, utilizando a classe Physics esses atributos não devem ser acessados, senão o sprite não será setado na posição desejada.

    Para rotacionar um sprite, basta setar o valor de sua rotação(em radianos), chamando o metodo setRotation, e getRotation para retornar seu valor.

    Ex:
    nave.setRotation(Math.PI/4);
      
    Obs: Esse metódo(setRotation) deve ser chamado obrigatoriamente antes dos métodos setX e setY. Uma vez que o método setRotation seja chamado, os métodos setX e setY devem ser chamados nem que seja para atribuí-los com valor 0.

    4 - Criando o Body

    Após todas as configurações terem sido feitas, o metodo createBodyFromSprite(Sprite spr, boolean isStatic) deve ser chamado, pois ele é responsável por criar o corpo do sprite adicionando a ele todas as configurações setadas no sprite. A variável isStatic do tipo boolean é responsável por criar um corpo estático ou não. Caso seja estática, a força gravitacional não agirá sobre o corpo. Abaixo segue um exemplo desde a etapa inicial(criando uma janela até a criação do corpo do sprite).

     Window win = new Window(800,600);
    Physics p = new Physics();
    p.createWorld(800,600);
    
    Sprite nave = new Sprite(“nave.png”);
    
    nave.setMass(1f);
    nave.setFriction(0.2f);
    nave.setRestitution(0f);
    
    nave.setRotation(Math.PI/4);
    
    nave.setX(200);
    nave.setY(100);
    
    
    p.createBodyFromSprite(nave,false).
    

    5 - Movimento

    O movimento do sprite pode ser feito utilizando o teclado ou não. O movimento do spirte utilizando o teclado é feito com a chamada do método applyForceXFromKeyboard (para o eixo X) e applyForceYFromKeyboard (para o eixo Y). Os dois métodos possuem 4 parâmetros, neles devem ser passados as duas teclas e o comportamento das mesmas.

    nave.applyForceXFromKeyboard((Keyboard.LEFT_KEY, Keyboard.RIGHT_KEY, 1,Keyboard.DETECT_EVERY_PRESS, 
    boolean boundsScreen);
    
    nave.applyForceYFromKeyboard(Keyboard.UP_KEY, Keyboard.DOWN_KEY, 90,Keyboard.DETECT_EVERY_PRESS, 
    boolean boundsScreen);	
    
    Para movimentar o sprite na tela sem a utilizando do teclado, devem ser usados os os metodos applyForceX e applyForceY. Os parâmetros passados(parâmetros do tipo Double) são apenas o valor da força que será aplicado no sprite.
     nave.applyForceX(2);
     nave.applyForceY(0);
    

    UFF - Universidade Federal Fluminense - Institudo de Computação - Ciência da Computação