Jbox2D学习(2)---世界的基本元素

本篇介绍物理引擎模拟世界中的基本元素,更复杂的元素留待以后再说。对基本元素的应用案例将在下篇给出。

  • 物理概念
  • 世界(World)
  • 形状(Shape)
  • 夹具(Fixture)
  • 刚体(Body)

物理概念

全部按照国际单位制

向量Vec2(float x, float y)

单精度浮点数构造的向量,存储一个物体(刚体)的位置、速度、力等变量。

质心

物体(或物体系)的质量中心,是研究物体(或物体系)机械运动的一个重要参考点。当作用力(或合力)通过该点时,物体只作移动而不发生转动;否则在发生移动的同时物体将绕该点转动。

恢复系数restitution

两物体碰撞后的总动能与碰撞前的总动能之间的比称之为恢复系数,其取值范围为0~1。如果恢复系数为 1,则碰撞为完全弹性碰撞,满足机械能守恒;如果恢复系数小于1并且大于0,则为非完全弹性碰撞,不满足机械能守恒;如果恢复系数为0,则为完全非弹性碰撞,两个物体会粘在一起。

世界(World)

引擎中对真实世界的仿真,一切模拟在“世界”中完成,一般只构造一个世界。

Vec2 gravity = new Vec2(0.0f, -10.0f); //重力
World world = new World(gravity, true); //创建世界
//World(Vec2 gravity, boolean isSleep) isSleep ->是否允许物体休眠

以后介绍如何使用AABB盒限制世界范围

形状(Shape)

主要包括两个基本形状:CircleShape和PolygonShape(包内还提供了一个Shape抽象类供继承)。形状的主要属性有CircleShape的半径,PolygonShape的顶点坐标。如:shape.m_radius = 5.0f

夹具(Fixture)

FixtureDef fd = new FixtureDef();  
fd.shape = shape;  //与形状绑定
fd.density = 1.0f;  //密度
fd.friction = 0;  //摩擦系数
fd.restitution = 0;  //恢复系数

刚体(Body)

在创建该类的对象时,不可以直接从构造器创建,必须通过World类对象的.createBody(BodyDef bd)方法创建(因此需要一个BodyDef实例)。然后调用其createFixture(FixtureDef fd)方法将夹具与刚体绑定。

BodyDef bd = new BodyDef();
bd.type = BodyType.DYNAMIC;  //动态刚体(BodyType.STATIC为静态刚体)
bd.position.set(0, 0);  //设定刚体位置
Body body = world.createBody(bd);  //创建刚体
body.createFixture(fd);  //绑定

刚体状态的获取:Vec2 body.getPosition()返回一个向量,其x,y 值分别是刚体的位置坐标。

你可能感兴趣的:(jbox2d,jbox2d教程,jbox2d)