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

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();// 这个等的长了
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值