首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >子弹物理-如何在另一个物体上移动物体?

子弹物理-如何在另一个物体上移动物体?
EN

Stack Overflow用户
提问于 2015-06-19 01:01:46
回答 1查看 727关注 0票数 0

我用的是Bullet物理引擎。我目前有一个可以移动和旋转的平台(btRigidBody)。在这个平台上,我想在每个角落放置4个立方体。现在,当平台平移或旋转时,我希望立方体留在这些角上。基本上,我希望他们相对于平台的位置/方向保持不变。

这是我尝试过的:

代码语言:javascript
复制
btTransform transform;
m_platform->getMotionState()->getWorldTransform(transform);
btQuaternion platformRotation = transform.getRotation();
btVector3 platformOrigin = transform.getOrigin();
btMatrix3x3 platformBasis = transform.getBasis();

for (int i = 0; i < CubeEnvironment::OBJECT_COUNT; ++i)
{
    btTransform objTransform;
    m_bodies[i]->getMotionState()->getWorldTransform(objTransform);

    objTransform.setRotation(platformRotation);

    m_bodies[i]->getMotionState()->setWorldTransform(objTransform);
}

这里,m_platform是平台,m_bodies由4个多维数据集组成。在此代码中,立方体确实随平台一起旋转,但仅在其本地框架中旋转,这意味着它们的原点保持在同一位置。

我还用get/setOriginget/setBasis做了一些实验,但没有什么帮助。

你知道我该怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2015-06-30 19:57:39

我建议在立方体和平台之间使用某种形式的约束,根据您的需要,您可以将立方体固定在平台上(btfixedconstraint),或者可以围绕轴(bthingeconstraint)或其他轴移动它。

你可以在上面找到完整的列表:http://bulletphysics.org/mediawiki-1.5.8/index.php/Constraints

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30921485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档