创建简单的Nape刚体

认识Nape空间里,看我们了解了这个2D物理引擎,并学习了如何创建一个基本的Nape应用,今天我们来学习一下如何创建一些简单的Nape刚体。

运动与静止的刚体

和Box2D一样,Nape中的也分为静止和运动刚体,对应静止的刚体将不进行物理运动模拟,这样可以节省CPU的开支。我们可以通过刚体的type属性设置刚体的类型,这个属性值可以是DYNAMIC、STATIC或KINEMATIC,分别表示运动的、静止的和不受力作用但可以运动的静态刚体。

1

var body:Body = new Body(BodyType.DYNAMIC,new Vec2(bx,by));

设置刚体的形状

Nape刚体的形状是通过body.shape属性来设置的,和Box2D不一样,这个shape属性是一个shapeList类对象,也就是说,我们无法直接给shape属性赋值,而是要通过body.shape.addShape()方法来添加刚体形状。

addShape()方法有一个Shape类型的参数,实际上我们通常都是使用Shape类的子类Circle和Polygon来设置刚体的形状,Shape类只有两个子类,但不代码刚体就只有两个形状。具体说明如下:

Circle类

Circle用来创建一个圆形对象。构造函数和相应的参数说明如下:

1

2

3

4

5

6

function Circle(

radius:Float,

localCOM:Vec2,

material:Material,

filter:InteractionFilter

)

  • radius:圆形的半径,以像素为单位
  • localCOM:圆形的重心,即质量的中心,默认为(0,0)
  • material:圆形的材质,比如弹性、摩擦系数等,都通过material属性设置,相当于Box2D里的b2FixtureDef,默认为null。以后我会再详细介绍material的用方法
  • filter:设置刚体的碰撞分组,相当于Box2D中的FilterData

Polygon类

Polygon类会根据制定的一组顶点,来创建一个多边形对象。顶点的个数和坐标不同,就可以创建多各种各样的形状。它的构造函数和参数说明如下:

1

2

3

4

5

public function Polygon (

localVerts:*,

material:Material = null,

filter:InteractionFilter = null

);

  • localVerts:表示一个保存了多边形顶点的数组。Polygon中有一些静态方法,如box(),可以帮我们返回一些简单的顶点数组,Polygon.box()也是我们创建矩形刚体常用的方法。
  • material:多边形的材质,比如弹性、摩擦系数等,都通过material属性设置,相当于Box2D里的b2FixtureDef,默认为null
  • filter:设置刚体的碰撞分组,相当于Box2D中的FilterData

总的来看,Nape刚体的创建过程要比Box2D简单一些,至少不用创建一大堆的b2Shape,b2FixtureDef,b2Fixture,b2BodyDef和b2Body对象,这么多对象,看着都头疼。所以Nape还是很值得学习的哦!

言归正传,认识了Circle和Polygon类之后,我们就可以创建简单的圆形和矩形刚体了(复杂的多边形Nape刚体,稍候我会陆续讲解)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

//创建圆形的Nape刚体

private function createCircle(posX:Number, posY:Number, radius:int, type:BodyType):void

{

//创建刚体,Body有两个参数,一个是指刚体的类型,一个是指刚体的坐标

var circle:Body = new Body(type, new Vec2(posX, posY));

//创建刚体形状,刚体形状类型有两种:Circle或Polygon,但不代表刚体形状只有两种,Polygon类可以创建出各种形状的多边形刚体形状

//第二个参数的Material对象,我只传入了一个参数,表示刚体的弹性系数,后续我会专门介绍material类。

var shape:Circle = new Circle(radius, null, new Material(1));

//刚体的shapes是一个ShapeList类型的对象,不能直接将Shape对象复制给它,要通过push,将形状添加到ShapeList中去

circle.shapes.push(shape);

//设置刚体的空间

circle.space=space;

}

//创建矩形的Nape刚体

private function createBox(posX:Number,posY:Number,width:Number,height:Number,type:BodyType, angle:Number=0):Body{

//创建刚体,Body有两个参数,一个是指刚体的类型,一个是指刚体的坐标

var box:Body = new Body(type, new Vec2(posX, posY));

//创建刚体形状,刚体形状类型有两种:Circle或Polygon,但不代表刚体形状只有两种,Polygon类可以创建出各种形状的多边形刚体形状

//Polygon.box()方法会返回一个保存了指定宽高的矩形4个顶点的数组,然后将这个数组传入到Polygon的第一个参数中,矩形就创建好了

var shape:Polygon = new Polygon(Polygon.box(width, height));

//创建一定的角度,单位是弧度

shape.rotate(angle);

//刚体的shapes是一个ShapeList类型的对象,不能直接将Shape对象复制给它,要通过push,将形状添加到ShapeList中去

box.shapes.push(shape);

//设置刚体的空间

box.space=space;

return box;

}

时间: 2024-11-01 22:58:56

创建简单的Nape刚体的相关文章

CocoStudio 创建简单UI资源并添加到工程

打开CocoStudio UI编辑器新项目,设置画布480*320, 添加一个标签和一个按钮控件 导出项目,生成所需要的资源文件, 复制到cocos2d工程Resources目录下 加入代码: 头文件: #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_EXT; using namespace ui; 加载cocostudio资源创建控件 _touchgroup = TouchG

IOS 创建简单表视图

创建简单表视图 此实例主要实现UITableViewDataSource协议中必须要实现的两个方法tableView:numberOfRowsInSection: 和tableView:cellForRowAtIndexPath: 当表视图显示的时候会发出tableView:numberOfRowsInSection:消息询问当前节中的行数. 当表视图单元格显示的时候会发出tableView:cellForRowAtIndexPath:消息为单元格提供显示数据. 一.实现的时序图,如下: 二.示

CocoStudio 创建简单UI资源并加入?到project

打开CocoStudio UI编辑器新项目,设置画布480*320, 加入?一个标签和一个button控件 导出项目,生成所须要的资源文件, 拷贝到cocos2dprojectResources文件夹下 添?代码: 头文件: #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_EXT; using namespace ui; 载入cocostudio资源创建控件 _touchgro

使用Visual Studio创建简单的自定义Web Part 部件属性

使用Visual Studio创建简单的自定义Web Part 部件属性 自定义属性使用额外的选项和设置拓展你的Web part部件.本文主要讲解如何使用Visual Studio创建简单的自定义Web Part 部件属性. 1. 打开Visual Studio,点击文件--新建项目--空白SharePoint项目CustomWPProperties.部署为场解决方案. 2. 右击项目添加新项Web Part部件WPPropertyExample,点击添加. 3. 右击WPPropertyExa

图文介绍MyEclipse (2015) 中创建简单的Maven项目的步骤(用于生成可运行jar文件)

利用MyEclipse的引导,能够非常方便的创建简单的.用于生成可运行jar文件的Maven项目: (原创文章,转载请注明转自Clement-Xu的博客:http://blog.csdn.net/clementad/article/details/46954277) 1.New -> Project... 选择 Maven Project, 点击Next > 2.在Select projrect name and location界面,各选项例如以下图,点击Next > 3.在Selec

.NET:WebApi 生成帮助文档及顺便创建简单的测试工具

==========最终的效果图========== ==========下面开始干活:生成帮助文档========== 一.创建 WebApi 项目 二.找到 HelpPageConfig.cs 并取消代码注释 1 config.SetDocumentationProvider( new XmlDocumentationProvider ( HttpContext.Current.Server.MapPath( "~/App_Data/XmlDocument.xml" ))); 三.

WebApi 生成帮助文档及顺便创建简单的测试工具

http://www.2cto.com/kf/201607/522971.html ==========最终的效果图========== ==========下面开始干活========== 一.创建 WebApi 项目 二.找到 HelpPageConfig.cs 并取消代码注释 ? 1 1 config.SetDocumentationProvider( new XmlDocumentationProvider ( HttpContext.Current.Server.MapPath( "~

jQuery EasyUI 窗口 – 创建简单窗口

jQuery EasyUI 窗口 – 创建简单窗口 创建一个窗口(window)非常简单,我们创建一个 DIV 标记: <div id="win" class="easyui-window" title="My Window" style="width:300px;height:100px;padding:5px;"> Some Content. </div> 现在运行测试页面,您会看见一个窗口(win

如何创建简单的 SWT 应用程序

如何创建简单的 SWT 应用程序http://www.ibm.com/developerworks/cn/opensource/os-jface1/