Box2D源码分析(刚体属性)

上一讲看到了刚体属性,以及刚体的形状和创建过程,可以做自由下落,最后知道怎样显示出视图。这一节完成一些特殊的效果。
属性的两个属性类:bodyDef和fixtureDef,包含了所有的属性,对刚体的操作也是在这些属性上完成的。本章主要介绍属性的使用。

BodyDef

它包含了位置,类型,线速度。角速度等,属性分类:

  • 状态
    • active:是否可用 如果可用就会进行碰撞模拟,反之
    • alowSleep:是否允许睡眠 在停止下来的时候就会进入睡眠,当运动的时候就会唤醒。
    • awake:活动与否
    • bullet是否模拟高速子弹 防止穿堂而过。
  • 角度 角速度
    • angle:刚体角度
    • angularDamping:刚体旋转的角速度阻尼
    • angularVelocity:旋转角速度
    • fixedRotation:是否禁用刚体旋转
    • inertiaScale:刚体角速度惯性系数 质量只会影响,线性的惯性,而角速度的惯性需要通过这个参数来控制 如果这个参数为0的时候,那么角度将不会变
  • 坐标 速度
    • linearDamping:阻尼
    • linearVelocity:刚体线性速度
    • position:位置
  • 其他属性
    • type:
      静态:不可以运动的
      动态: 可以运动的
      可动刚体
    • userData:自定义属性

状态类属性

active
刚体是不是处于激活状态,如果是false,那么在模拟的过程中就会被忽略掉,一般的如果超出渲染范围的可以设置为false .
举例子:如果某个刚体被设置为false,上面下落一个物体就直接穿堂而过,不进行任何的模拟操作;
awake
当前是不是处于唤醒状态,物体在运行的过程中,精致 的时候会标记为睡眠,发生碰撞的时候就会唤醒。一般的时候是不需要进行设置的,他一般的会进行自己操作的。
allowSleep
是否可以睡眠,默认为true,allowSleep和world中的一样,只不过作用的范围不同。
Bullet
是否模拟高速的子弹,开启CCD碰撞,默认是false,这个是为了防止高速运动的物体发生碰撞,容易穿透而设定的,需要比较大的运算开支,所以开启的不易太多。

角度、角速度类属性

angle:刚体的角度,是一个弧度值,转换关系:1弧度 = 180 / Math.PI。
angularVelocity:刚体的角速度 单位为弧度/秒,所以使用的时候需要进行转换,比较熟悉的单位通常是度/帧。假如渲染帧fps,那么弧度/秒和度/帧的关系如下:
弧度:1rad
秒:1s
弧度/秒:1rad/s
度:180/Math.PI
帧:fps
度/帧 :180/Math.PI / fps

image.png

旋转点:围绕中心,旋转中心,一般的就是刚体重心的坐标点,也可以进行修改,比如不倒翁。
angularDamping角速度阻尼,旋转摩擦力。他的范围是0~1之间,取值越大角速度降低的越快。
比如旋转加上阻尼就会很快的慢下来。
inertiaScale:角速度惯性系数,它可以为非负数,质量越大,惯性越大,移动的速度和角度也很难改变。质量只会影响惯性系数,旋转的惯性剋通过设置,角速度惯性系数越大,角速度变化的就越慢,如果角速度的惯性系数为0,那么角度就会一直保持不变。
fixedRotation:是否禁止旋转,刚体发生碰撞后不发生改变

坐标 速度类属性

  • positiin:刚体坐标,同时 也是刚体本地系统的坐标原点
    一般的直接修改刚体的坐标,实现刚体瞬间移动的效果。位置的读写方法getPosition和setPosition,使用setPostion进行更新需要谨慎。
  • linearVelocity:刚体的线性速度 ,m/s,转换关系,30帧的时候 1m/s = 1px/f
  • linearDamping:线性阻尼,取值范围0~1,线性阻尼越大,刚体运动速度变化越慢。
    使用场景,如果在太空中翱翔,不受到 摩檫力,可以通过这个参数让它们停下来。它的读写方法getLinearDamping()和setLinearDamping.
    初始的时候属性都为0,在设置了线性速度之后,它保持相同的运动轨迹,然后设置了阻尼就会慢慢的停下来。

其他属性

type:静态 动态 可动

  • staticBoduy:静态刚体 碰撞后不进行反弹,不受到外力的影响。一般在游戏中台子等使用静态。
  • kinermaticBody:可动刚体,和静态的类似,碰撞之后不反弹,但是可以运动。看可以 设置setLineatVelocity和setAnfularVelocity可以添加速度,可以作位电梯效果。
  • dynamicBody:动态刚体,可以运动,碰撞后会进行反弹、变向等响应刚体。

bullet只会针对动态刚体有效果,静态的刚体和可动的刚体默认都是按照true设置的会进行连续检测。这也就是可以穿过障碍物,但是不会穿过墙

如果在运行的过程中突然改变刚体的类型,那么就会立即停止,就像冻住了一样。

FixtureDef

主要 保存了刚体特性方面的属性,比如密度、表面摩檫力、弹性系数等
分类可以分为:

  • 特质特性
    (1)density:密度 : 密度如果设置为0,则会强制设置为1 ,体积越大,惯性越大,维持当前状态的力就越大。
    (2)friction:摩擦系数 摩檫力和阻尼不是一回事,虽然都会降低速度,但是摩檫力可以模拟出冰面等。
    (3)restitution:弹性系数 可以模拟出撞击到地面,水泥面等上面的特性。
  • 碰撞 特性
    (1)filter:碰撞过滤:就是对刚体分类别,那些可以撞击,那些不可以撞击
    (2)是否为传感器 : 值进行碰撞,但是不进行碰撞模拟
  • 形状
    (1)Shape:形状
  • 自定义
    (1)userdata
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容