[LIBGDX学习]LibGDX代码详解(九)Box2D revolute joint

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();
		}
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值