学习Nape中的Material类
在创建简单的Nape刚体教程中,我们提到了Material类,今天我们就来学习一下Material类的用法。
Material类对象时Shape类的一个属性,用来设置刚体的弹性、摩擦系数等属性, 模拟现实中的阻尼运动。弹性系数或摩擦系数等属性可以在Material类的构造函数中设置,如下:
public function Material ( elasticity:Number = 0, dynamicFriction:Number = 1, staticFriction:Number = 2, density:Number = 1, rollingFriction:Number = 0.01 );
每个参数的意义如下:
- elasticity:材质的弹性系数。可以是任何值,设置为0表示不反弹。设置成1可以理解成无损耗反弹,就像永动机一样。
- dynamicFriction:设置材质的动态摩擦系数。可以是大于0的任意值,值越大,物体再滑行时,速度减的越快。
- staticFriction:静态摩擦系数。值越大,物体减速越快,对于静止的物体,动起来也越困难。
- density:设置材质的密度,单位是克/px/px,默认为1。
- rollingFriction:旋转摩擦系数。值越大,角速度减小的越快。
或者也可以通过这些同名的属性来设置,比如:
material.elasticity= 1;
另外,Material类中还有一些静态的方法,额可以返回一些预定义的Material对象,从这些方法名称可以知道,它们分别代表的不同的材质,这些方法也也就是根据这些材质预先定义好上面的每个属性,创建一个新Material类,并返回。这些静态方法有:
- glass:预定义玻璃材质,返回值 new Material(0.4,0.4,0.94,2.6,0.002)
- ice:预定义冰块材质,返回值new Material(0.3,0.03,0.1,0.9,0.0001)
- rubber:预定义橡胶材质,返回值new Material(0.8,1.0,1.4,1.5,0.01)
- sand:预定义沙土材质,返回值new Material(-1.0,0.45,0.6,1.6,16.0)
- steel:预定义钢铁材质,返回值new Material(0.2,0.57,0.74,7.8,0.001)
- wood:预定义木头材质,返回值new Material(0.4,0.2,0.38,0.7,0.005)
在下面的示例中,通过上的面板,可以调节每个参数,或者选择左边预定义的material类型。点击舞台创建矩形,按下Ctrl键的同时点击舞台,创建圆形矩形,设置不同的参数看看不同的效果吧!
[swfobject]679[/swfobject]
联系作者
比起Box2D有什么优点跟缺点么?
Material类相当于Box2D中的b2Fixutre类,相比之下,Nape的Material类里多了dynamicFriction、staticFriction和rollingFriction的区分,具体的差别可以试着调节下面的slider看看。
至于优缺点嘛,Nape的速度会比Box2D更快些(我没有测试过,网上是这么说的),另外Nape是基于像素px的,不需要进行单位转换,这一点比较好!
缺点 资料少。
拉登哥,下面那个示例不错的说!
rollingFriction:旋转摩擦系数。值越大,角速度减小的越快
这个角速度是什么意思啊???
写代码测试下,rollingFriction值越大,它滚动时消耗的能量越多!所以滚不远,嘎嘎!
拉登兄给力!
兄弟你来了!来来,里屋坐!
拉登给力 很不错的教程,之前你是用的新浪博客吧
是的,之前也在关注我的博客吗?谢谢!
是啊 很早就关注你了 你这个名字太霸气了
这节没有原码?
没有,就是讲解Material的用法,源码没什么好看的
资料不少,只是系统的中文资料太少。也就只能看看大叔的教程。
中文版资料,我的还算是比较全的,只是最近工作忙,一直没有时间再整理,放心,今年肯定会出结果的!