• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

lfkabc

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

jbox2d学习总结1

上大学的时候感觉学的东西很虚,在实际生活或者工作中根本用不到,现在看来是错了。有点悔恨,呵呵,起码数学知识还是有点用的,至少应该知道一些名词定义和简单的使用,比如阻尼呀,力矩呀,还有矩阵、积分什么的。不啰嗦了,let's begin!

 

基本思路:

创建物体(刚体)五步走:

  1. 使用位置、阻尼等定义一个物体。
  2. 使用世界对象创建物体。
  3. 使用几何结构、摩擦系数、密度等属性定义形状。
  4. 在物体上创建形状。
  5. 这一步不是必须的,调整一些属性。

没有对物体设置密度,则该物体的质量就为0,所以该物体就是静态的,静态物体之间没有碰撞。如果设置了密度,则需要调用body.setMassFromShaps()函数来计算质量。可以对单个物体添加多个形状。

每个形状都必须有一个父物体。

积分器用来模拟物理方程,一般情况下,时间不设置为60Hz,即 float timeStep = 1.0f/60.0f 。

迭代次数一般设置我10次,因为迭代次数大了精度会更精确,但是性能会下降,反之亦然。一次迭代就是遍历一次所有约束,迭代器和时间步之间没有联系。

移动物体的尺寸应该保持在0.1到10米之间。

创建一个世界只需要包围合、重力向量,包围合必须大于世界,否则将被冻结,一般将包围合设置为世界的两倍大小。当模拟一个世界的时候,需要提供两个属性:时间步,迭代次数。

物体(刚体)是一个制定好的东西,在刚体上的两个形状永远不会相对移动,就像你的手和你的脚一样,脚永远不会跑到手的位置上来,呵呵。

阻尼的大小一般设置在0到0.1之间。

可以穿越其他物体的物体称为子弹,子弹是物体的一个属性,一个物体要变为子弹,只需简单地设置body.isBullet=true即可。

物体的用户数据可以是任何类型的数据。

 

计算两个物体之间的摩擦系数:float friction = sqrtf(friction1*friction2);

恢复,我的理解是弹性系数,通常设置的值为0到1之间。计算两个物体之间的恢复:float restitution = b2Max(restitution1,restitution2);

传感器可以监听碰撞但是不发生碰撞反应。通过shape.isSensor = true;来设置某个形状为传感器。

关节(joint)用于连接两个物体,锚点取在关节上用于产生实际连接的点。

posted on 2011-10-02 17:55  听听音乐,写写博客,挺好  阅读(507)  评论(2)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3