zoukankan      html  css  js  c++  java
  • Libgdx Box2D现实---这缓释微丸(两:Box2D介绍)

    

    Box2D官方网站 : http://box2d.org/

    Box2D v2.1.0用户手冊翻译 : http://blog.csdn.net/complex_ok/article/category/871440

    Libgdx使用jni封装了box2d的c++版本号,使得其执行效率比其它同级的物理引擎如jbox2d快不少。



    一、基础类

    BodyDef 

    A body definition holds all the data needed to construct a rigid body. You can safely re-use body definitions. Shapes are added to a body after construction.

    定义Body所须要的全部数据都由它负责,我们能够反复使用。

    Shape与Body的绑定必须在它之后完毕。

    这个我理解为能够通过它来定义物体模型的类型等数据,它放入Body中。

    常见使用方法是来定义类型:

    BodyDef ballBodyDef = new BodyDef();  //构建对象
    ballBodyDef.type = BodyType.DynamicBody;//定义类型,DynamicBody是不受控制的动态物体,KinematicBody是受控制的动态物体,StaticBody是静态物体


    Body

    A rigid body. These are created via World.CreateBody.

    这是一个非常坚硬的物体,不要妄想去改变它的形状。我们仅仅能通过World.CreateBody方法来创建它。


    使用方法例如以下(ballModels是body):

    ballModels = world.createBody(ballBodyDef);
    ballModels.createFixture(fd);

    Box2DDebugRenderer

    用于測试Box2D的图形显示。会把图形的形状通过不同颜色绘制出来。

    ChainShape、CircleShape 、EdgeShape 、PolygonShape  

    他们都继承于Shap,是最主要的图形

    Fixture

    将形状绑定到物体之上, 并有一定的材质属性, 比方密度(density)等。必须由Body.createFixture生成。

    FixtureDef 

    Fixture的属性申明。可反复使用。



    FixtureDef fd = new FixtureDef();
    		fd.density = 1;//密度
    		fd.friction = 0f;//摩擦力
    		fd.restitution = 0.5f;//弹力0-1,1为全然弹性碰撞
    		fd.shape = shape;

    World 

    The world class manages all physics entities, dynamic simulation, and asynchronous queries. The world also contains efficient memory management facilities.

    管理全部物理实体,动态模拟,异步查询。

    还包括高效的内存管理机制。

    物理世界,管理全部body,

    如:

    <span style="color:#33cc00;">world = new World(new Vector2(0, -10f), false);//代表向下重力加速度为10的物理世界</span>
    <span style="color:#33cc00;"></span>

    因为物理世界和render中时间不一致,我们一般要进行转换,就是在render方法中加一句:

    world.step(1 / 60f, 10, 10);

    同一时候,物理世界參考点在屏幕中心。而stage是(0,0),希望大家可以注意。

    物理世界的长度不是依照像素计算的。要注意单位换算。一般换算比是    1:60,。物理世界是1.

    
    

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    设计模式网页资料
    委托的begininvoke
    C# 给某个方法设定执行超时时间
    C#中的Invoke----control上的以及delegate的是不一样的
    如何在windows中部署Gitblit
    sqlserver数据库出错的解决方法
    追索权 Eclipse + NDK error: stray &#39;24&#39; in program
    Linux课程_系统配置和日常维护
    1007: 童年二三事
    开源:矿Android新闻client,快、小、支持离线阅读、操作简单、内容丰富,形式多样展示、的信息量、全功能 等待(离开码邮箱)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4619507.html
Copyright © 2011-2022 走看看