Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Personagem {
- Body body;
- float altura, largura;
- Personagem(float x, float y){
- altura = 16;
- largura = 16;
- BodyDef bd = new BodyDef(); //criando as caracteristicas de um corpo do nosso personagem
- bd.type = BodyType.DYNAMIC; //Sera um corpo dinamico (com movimento)
- bd.position.set(box2d.coordPixelsToWorld(x,y)); //essa sera a posicao do nosso corpo. Perceba que ha uma conversao do espaco fisico
- // para o espaco "pixelar". Isso se deve ao padrao de cada lib. Na box 2d, centro do sistema cartesiano eh dado no centro da tela (x=0,y=0)
- //ja no sistema grafico da processing eh dado no canto superior esquerdo.
- body = box2d.createBody(bd); // atribuimos ao corpo do personagem, as definicoes do corpo criado.
- PolygonShape ps = new PolygonShape(); //criando as caractericas geometricas de um corpo
- float box2dLargura = box2d.scalarPixelsToWorld(largura/2); //convertendo as dimensoes de pixels para "metro"
- float box2dAltura = box2d.scalarPixelsToWorld(altura/2); //o mesmo que acima
- //Porque dividido por 2? Simples, para o box2d as dimensoes dos objetos sao dadas do seu centro espacial ate a seu fim. Logo, seria
- //a metade do que nos normalmente adotamos como largura e altura
- ps.setAsBox(box2dLargura, box2dAltura); //setamos como um caixa com as dimensoes dadas entre parenteses
- FixtureDef fd = new FixtureDef(); //Entao, definimos o tipo de corpo, o tipo geometrico agora faltam as especificacoes fisicas deste.
- //Nao encontrei uma traducao para fixture, mas creio que seriam como "propriedades" algo do tipo.
- fd.shape = ps; //Informamos que o formato do corpo sera o formato ps criado. Isso porque, a box2d ira utilizar este para calular informacoes
- //uteis como: Massa, centro de massa, momento angular e etc.
- fd.density = 1; // definindo a densidade, veja, nao damos uma massa e sim a densidade, a massa sera calculada usando as dimensoes e densidade
- fd.friction = 0.3; //coeficiente de atrito
- fd.restitution = 0.5; //coeficiente de restituicao
- body.createFixture(fd); //agora passamos as qualidades "fixture" criada para o nosso corpo
- }
- void display(){ //aqui sera a parte em que pegaremos os dados que a box2d nos da e desenharemos na tela
- Vec2 pos = box2d.getBodyPixelCoord(body); //o vetor posicao (Vec2 = vetor de duas dimensoes) sera dado pela conversao da posicao do corpo body para o sistema pixel
- float angulo = body.getAngle(); //angulo do corpo
- pushMatrix();
- translate(pos.x,pos.y); //imagem sera deslocada
- rotate(-angulo); //rodaremos no angulo dado pela box2d
- fill(127); //colorindo
- stroke(0);//borda
- strokeWeight(2);//espesura da borda
- rectMode(CENTER);
- rect(0,0,altura,largura);
- popMatrix();
- }
- void Walk(){
- if(key == 'a'){
- body.applyForce(new Vec2 (-50,0), body.getWorldCenter());
- }
- if(key == 'd'){
- body.applyForce(new Vec2(50,0), body.getWorldCenter());
- }
- if(key == 's'){
- body.applyForce(new Vec2(0,-50), body.getWorldCenter());
- }
- if(key == 'w'){
- body.applyForce(new Vec2(0,50), body.getWorldCenter());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement