• 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.

    
    

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

  • 相关阅读:
    从0开始学习自动化框架Airtest
    测试经理必知必会-Kanban和Scrum区别
    测试工程师的福音-如何使用Sonar完成代码质量检测
    看了很多文章,就这篇说明白了什么是接口测试
    测试经理必知必会:敏捷模型之Kanban
    Selenium元素定位不到?JS注入轻松搞定!
    测试经理必知必会:敏捷开发3355原则
    我知道你会冒泡排序,但是你会优化冒泡排序吗?
    快来使用Portainer让测试环境搭建飞起来吧
    给个MySQL,打算怎么测试?
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4619507.html
Copyright © 2020-2023  润新知