zoukankan      html  css  js  c++  java
  • Box2D学习笔记(2)

    每个Box2D程序都将从一个世界对象的创建开始。他是管理对象以及模拟的中心。

    Code

    创建世界对象b2World,

    (1)首先应当创建包围和盒对象b2AABB。他的大小是越大越好。

    因为当刚体碰到包围盒的边缘的时候他会停止模拟。

    (2)创建世界中的重力场。他是一个2维的适量b2Vec2。

    (3)当物体停止移动的时候,让物体停止模拟。节约资源doSleep。

    以上这3个的确定都是初始化world对象所必须的。到此就创建了一个有一定的大小以及一定的重力场的空间,有了就可以往里面装东西了。

    创建刚体b2Body,

      (1)刚体的是由世界对象来创建的

    var  body:b2Body=this.world.CreateBody(bodyDef);

    其中的参数bodyDef是b2BodyDef创建的,是对body的defination.

    var bodyDef:b2BodyDef=new b2BodyDef();
    bodyDef.position.Set(
    0,4);

    他主要是用于初始化刚体在世界空间里的一些属性。包括位置(position)、质量(mass)、旋转角度(angle)等。

    现在我们已经创建了一个刚体,并确定了他在世界空间当中的位置。物体到底是什么样的,以及他的物理属性怎么样是我么马上就要创建的。

      (2)给物体定义形状以及物理材质

    body.CreateShape(shapeDef);

    其中的初始参数shapeDef是b2ShapeDef

    1var shapeDef:b2PolygonDef=new b2PolygonDef();//定义形状为多边形
    2shapeDef.SetAsBox(3,3);//将多边形设为矩形
    3shapeDef.density=1.0;//定义密度
    4shapeDef.friction=0.3;//定义摩擦力

    b2PolygonDef是继承自b2ShapeDef

    public class b2PolygonDef extends b2ShapeDef

    除了b2PolygonDef外还有b2CircleDef。

    到现在我们的刚体依然是没的外观的,对其定义的shapeDef也只是对其封装了一些特殊的属性而已。

    实际上定义刚体外观的是bodyDef(shapeDef也有这个属性)的userDate属性,他是*类型的。任何类型的对象都可以给他。我们现在需要用它来定义外观(形状)就将形状类或影片类的引用传给他就可以了。同时需要将userData加入到舞台的显示列表当中。

    bodyDef.userData = new PhysCircle();

    bodyDef.userData.width 
    = rX * 2 * 30

    bodyDef.userData.height 
    = rX * 2 * 30

    其中的physCircle是sharp类的自定义类。

    来自官方的helloWorld源码:

    Code

    其中的userData的对象都是在flash中定义影片剪辑导出类。

  • 相关阅读:
    新手Android开发:onclicklistener到底怎么用?
    Myeclipse中web project 与java project区别
    <jsp:directive.page import=""/>的用法和解释
    怎样在myeclipse下,打开已有的项目
    有史以来最简单的三层实例(C#)
    show()跟showdialog()的区别
    献给和我一样的Java初学者——用UltraEdit代替“笨重”的IDE,实现轻巧编程!
    数据库连接错误——请求失败或服务器未及时响应
    说说二级C++
    十一张图让你轻松学会用VS打包
  • 原文地址:https://www.cnblogs.com/daidu/p/1593036.html
Copyright © 2011-2022 走看看