我下载了在此处找到的发行文件,但不确定从哪里开始。在我的游戏中,我有多个椭圆和一个球体,我希望所有这些相互碰撞。(它们都有网格和相关的边界体积)
编辑-我只是意识到长方体实际上与AABB关联。我想至少得改变一下。
我需要遵循哪些步骤?
我下载了在此处找到的发行文件,但不确定从哪里开始。在我的游戏中,我有多个椭圆和一个球体,我希望所有这些相互碰撞。(它们都有网格和相关的边界体积)
编辑-我只是意识到长方体实际上与AABB关联。我想至少得改变一下。
我需要遵循哪些步骤?
Answers:
这是您需要遵循的基本步骤:
首先创建一个世界对象(即btDiscreteDynamicsWorld
)来驱动您的物理模拟。
您应该已经有一个类,例如GameObject
可能将模型及其边界框和位置/方向存储在世界中。取代的位置/姿势信息与一个物理的实例体对象(即btRigidBody
)和渲染模型时,使用由所述主体提供代替的信息。创建实体时,您需要提供其质量和碰撞形状,它们应与您已有的边界体积匹配。我在您的其他问题中也谈到了这一点。
将每个游戏对象的实体添加到世界对象。
通过步进世界(即调用stepSimulation
您的世界)来更新仿真。
并且花一些时间阅读该手册,因为它也有很多信息。
编辑以发表评论
我不敢问,但...我该如何做一些非常基础的工作,例如在游戏中包含正确的文件?如果您需要具体信息,我正在寻找可以解决刚体碰撞的文件。也非常感谢您到目前为止的帮助!
好吧,从您的评论中可以看出,您以前从未使用过外部C ++库。自从我这样做以来已经有一段时间了,但这就是我记得该过程(在Visual Studio中)的方式。
对于初学者,我引用了已经说明您需要的手册:
- #include “btBulletDynamicsCommon.h” in your source file
- Required include path: Bullet/src folder
- Required libraries: BulletDynamics, BulletCollision, LinearMath
这是满足上述条件所必须遵循的基本步骤...
1.准备步骤
首先,将下载的文件解压缩到已知目录中,例如C:\Bullet
。您稍后需要知道此文件夹的路径。
里面有两个文件夹,您需要在项目中引用它们。第一个是src
文件夹,其中包含.h
要包含在源代码中的头文件。第二个是lib
文件夹,其中.lib
包含将链接到项目的库文件。请注意,包含和链接是两件事。
但是该lib
文件夹现在应该为空,因为您尚未构建引擎。因此,例如,请参阅有关如何使用CMake和Visual Studio生成项目的手册。在第7页。
你成功后,你应该有至少三个文件lib
夹:BulletDynamics.lib
,BulletCollision.lib
和LinearMath.lib
(我从手动猜测)。现在在Bullet和您的项目之间建立联系...
2.包含标题
首先,您需要将C:\Bullet\src
文件夹添加到项目的包含路径选项。您可以在Visual Studio中执行此操作,方法是右键单击您的项目,导航到其中Configuration Properties -> C/C++ -> General -> Additional Include Directories
并在其中写入目录路径。
设置完之后,您只需执行#include “btBulletDynamicsCommon.h”
代码即可。该标头似乎可以充当您所需的所有功能的枢纽。
3.链接库
最后,您需要链接上述库。在“第一个”下,Configuration Properties -> Linker -> General -> Additional Library Directories
将路径添加到lib
文件夹下,或者说C:\Bullet\lib
。
然后,在下Configuration Properties -> Linker -> Input-> Additional Dependencies
,将库的名称添加到依赖项列表中。用a分隔每个库,;
不要忘记文件扩展名。因此,例如,您可以将其添加到列表的末尾:BulletDynamics.lib;BulletCollision.lib;LinearMath.lib
。
之后,您应该能够构建并运行您的项目。
4.4 Integration overview
我知道它是很精简的,但确实描述了基本过程。因此,如果您查看示例代码示例的代码,那么您应该不会有太多问题。