box2d 粗略的模拟水浮力

               

准备工作,首先修改 box2d 的 b2Body 类,

增加一个public 修饰的 bool 类型标识变量 m_isInWater,用于标识物体当前是否在水中。

然后,切到  box2d 的 b2World 类,在 CreateBody 方法的尾部添加一行初始化标识变量的代码:

b2Body* b2World::CreateBody(const b2BodyDef* def){ b2Assert(IsLocked() == false); if (IsLocked()) {  return NULL; } void* mem = m_blockAllocator.Allocate(sizeof(b2Body)); b2Body* b = new (mem) b2Body(def, this); // Add to world doubly linked list. b->m_prev = NULL; b->m_next = m_bodyList; if (m_bodyList) {  m_bodyList->m_prev = b; } m_bodyList = b; ++m_bodyCount;    /** Added By Bruce Yang on 2011.11.25.12.49~ */    b->m_isCuttable = true; // body 默认设置为可被切割的~    b->m_isBalloon = false; // body 默认设置为非气球~    b->m_isInWater = false; // body 默认设置不在水中(即使出生就在水中也不要紧,contactListener会立即做相应设置)~ return b;}
contactListener 的相关代码:

////  MyContactListener.m//  GameScene
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值