您的位置:首页 > 编程语言

[LIBGDX学习]LibGDX代码详解(十五)Box2D

2018-02-23 17:13 302 查看
package com.mygdx.game.box2d;

import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.BodyDef;
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType;
import com.badlogic.gdx.physics.box2d.EdgeShape;
import com.badlogic.gdx.physics.box2d.PolygonShape;
import com.badlogic.gdx.physics.box2d.World;

public class ContinuousTest extends Box2DTest {
int m_stepCount = 0;
Body m_body;
float m_angularVelocity;

@Override
protected void createWorld (World world) {
{
BodyDef bd = new BodyDef();
bd.position.set(0, 0);
Body body = world.createBody(bd);

EdgeShape shape = new EdgeShape();
shape.set(new Vector2(-10, 0), new Vector2(10, 0));
body.createFixture(shape, 0);
shape.dispose();

PolygonShape poly = new PolygonShape();
poly.setAsBox(0.2f, 1.0f, new Vector2(0.5f, 1.0f), 0);
body.createFixture(poly, 0);
poly.dispose();
}

{
BodyDef bd = new BodyDef();
bd.type = BodyType.DynamicBody;
bd.position.set(0, 20);

PolygonShape shape = new PolygonShape();
shape.setAsBox(2, 0.1f);

m_body = world.createBody(bd);
m_body.createFixture(shape, 1);

m_angularVelocity = 33.468121f;
m_body.setLinearVelocity(new Vector2(0, -100));
m_body.setAngularVelocity(m_angularVelocity);
shape.dispose();
}
}

private void launch () {
m_body.setTransform(new Vector2(0, 20), 0);
m_angularVelocity = (float)Math.random() * 100 - 80;// 旋转速度
//m_angularVelocity = 5;
m_body.setLinearVelocity(new Vector2(0, -100));
//m_body.setLinearVelocity(new Vector2((float)((Math.random()>0.5f?1:-1)*Math.random()*100), -(float)Math.random()*100));// (50, -100 往右下打)
m_body.setAngularVelocity(m_angularVelocity);
}

public void render () {
super.render();

m_stepCount++;
//if (m_stepCount % 60 == 0) launch();
if (m_stepCount % 600 == 0) launch();// 这个等的长了
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: