[LIBGDX学习]LibGDX代码详解(九)Box2D revolute joint
2018-02-22 19:09
459 查看
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.FixtureDef; import com.badlogic.gdx.physics.box2d.PolygonShape; import com.badlogic.gdx.physics.box2d.World; import com.badlogic.gdx.physics.box2d.joints.RevoluteJointDef; /** * Revolute Joint 转动关节 */ public class Chain extends Box2DTest { @Override protected void createWorld (World world) { Body ground; { BodyDef bd = new BodyDef(); ground = world.createBody(bd); EdgeShape shape = new EdgeShape(); shape.set(new Vector2(-40, 0), new Vector2(40, 0)); ground.createFixture(shape, 0.0f);// 从形状创建一个存在物 shape.dispose();// 创建了存在物就处理掉形状 } { PolygonShape shape = new PolygonShape(); //shape.setAsBox(0.6f, 0.125f); shape.setAsBox(0.49f, 0.125f); FixtureDef fd = new FixtureDef(); fd.shape = shape; fd.density = 20.0f; //fd.density = 200000.0f; //fd.friction = 0.2f; fd.friction = 1000f; RevoluteJointDef jd = new RevoluteJointDef(); // 意思是一个关节的两个body能不能碰撞 // 由于这个场景两个body是连在一起,设为true结果是整个链条变得不灵活 jd.collideConnected = false; float y = 25.0f; Body prevBody = ground; for (int i = 0; i < 30; i++) { BodyDef bd = new BodyDef(); bd.type = BodyType.DynamicBody; bd.position.set(0.5f + i, y); Body body = world.createBody(bd); body.createFixture(fd); //Vector2 anchor = new Vector2(i, y); Vector2 anchor = new Vector2(i, y); jd.initialize(prevBody, body, anchor); world.createJoint(jd); prevBody = body; } shape.dispose(); } } }
相关文章推荐
- [LIBGDX学习]LibGDX代码详解(十六)Box2D prismatic joint
- [LIBGDX学习]LibGDX代码详解(十四)Box2D apply force
- [LIBGDX学习]LibGDX代码详解(二十二)Box2D 弹性
- [LIBGDX学习]LibGDX代码详解(四)Box2D
- [LIBGDX学习]LibGDX代码详解(五)Box2D
- [LIBGDX学习]LibGDX代码详解(二十三)Box2D 传送带
- [LIBGDX学习]LibGDX代码详解(七)Box2D
- [LIBGDX学习]LibGDX代码详解(十一)Box2D bridge
- [LIBGDX学习]LibGDX代码详解(十三)Box2D wield joint
- [LIBGDX学习]LibGDX代码详解(十八)Box2D
- [LIBGDX学习]LibGDX代码详解(十九)Box2D 金字塔
- [LIBGDX学习]LibGDX代码详解(二十一)Box2D 子弹穿透
- [LIBGDX学习]LibGDX代码详解(十五)Box2D
- [LIBGDX学习]LibGDX代码详解(十七) Box2D character collision
- [LIBGDX学习]LibGDX代码详解(三)Box2D character control
- [LIBGDX学习]LibGDX代码详解(十八)Box2D body type
- [LIBGDX学习]LibGDX代码详解(二十九)Bullet
- [LIBGDX学习]LibGDX代码详解(三十五)Bullet
- [LIBGDX学习]LibGDX代码详解(三十)Bullet shoot
- [LIBGDX学习]LibGDX代码详解(三十一)Bullet 基本形状