关于box2D碰撞过程中三个函数在源代码
setCategoryBitmask(int bitmask)
setContactTestBitmask(int bitmask)
setCollisionBitmask(int bitmask)
源码:
// bitmask check
if ((shapeA->getCategoryBitmask() & shapeB->getContactTestBitmask()) == 0
|| (shapeA->getContactTestBitmask() & shapeB->getCategoryBitmask()) == 0)
{
contact.setNotificationEnable(false);
}
if (shapeA->getGroup() != 0 && shapeA->getGroup() == shapeB->getGroup())
{
ret = shapeA->getGroup() > 0;
}
else
{
if ((shapeA->getCategoryBitmask() & shapeB->getCollisionBitmask()) == 0
|| (shapeB->getCategoryBitmask() & shapeA->getCollisionBitmask()) == 0)
{
ret = false;
}
}
本文深入探讨了Box2D物理引擎中碰撞检测的核心函数setCategoryBitmask、setContactTestBitmask及setCollisionBitmask的工作原理,并通过源代码详细解释了这些函数如何决定两个物体是否发生碰撞。
4万+

被折叠的 条评论
为什么被折叠?



