Articles of bullet physics

使用子弹和libgdx的Android游戏

我正在开发一个学校的Android项目,我目前正在使用libgdx进行渲染。 它的performance相当好,但它缺less一个3d物理库。 所以我search,发现子弹物理引擎移植到Android通过NDK(C + +)。 有没有人试图将这两个库连接在一起? 我以前从来没有使用过物理引擎/库(我主要开发了2D游戏,所以我自己做了一个),并且想问问任何人是否有过使用子弹和libgdx的经验? 更准确地说,我需要模拟一个跳跃和实现物理,如:风/阻力,摩擦,升力,重力; 在跳跃期间。 子弹是否通过自身来计算重力和其他力量(如果这样的话,我可以轻易地实现其他力量吗?)还是我可以控制哪些元素得到更新(主要是重新转换)以及何时? 碰撞检测如何工作(是否有某种碰撞世界/集合)? 我可以自己处理碰撞检测吗?还是子弹也照顾这个呢? 感谢您的答复!

什么是运动球的最好的宽相界面?

到目前为止,我正在努力优化物理和碰撞的性能,到目前为止,我的主电脑还有一些其他电脑正在减速。 我拥有超过3000个btSphereShape Rigidbodies,其中2/3根本不动,但我注意到(通过下面的轮廓)碰撞正在花费一些时间来操纵。 Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls ms/call ms/call name 10.09 0.65 0.65 SphereTriangleDetector::collide(btVector3 const&, btVector3&, btVector3&, float&, float&, float) 7.61 1.14 0.49 btSphereTriangleCollisionAlgorithm::processCollision(btCollisionObject*, btCollisionObject*, btDispatcherInfo const&, btManifoldResult*) 5.59 1.50 0.36 btConvexTriangleCallback::processTriangle(btVector3*, int, int) 5.43 1.85 0.35 btQuantizedBvh::reportAabbOverlappingNodex(btNodeOverlapCallback*, btVector3 const&, btVector3 const&) const 4.97 […]

子弹物理仿真运行缓慢

我正在将我的游戏引擎从使用LWJGL和JBullet的java转换为c ++。 然而,当我实施子弹物理学时,我简单地模拟了一个从指定高度落到飞机上的盒子,运行起来非常缓慢。 在淘汰表格之后,我遇到了两个可能的解决scheme: 在发布模式下编译我的模拟,而不是debugging。 为速度启用编译器优化。 在版本中建立并启用编译器优化后,我的仿真仍以相同的速度运行。 我已经testing了通常在400-350fps之间运行的FPS,并且仿真每一帧都被加强了。 我找不到和我一样有问题的人,我不明白为什么JBullet是Bullet Physics Library的Java端口,在同一台PC上运行良好。 任何帮助将非常感激。 谢谢!

我将如何设置BulletPhysics的环境variables?

我正在使用子弹物理 v2.78。 我试图建立这个库用于ogrebullet 。 主要的问题是,我得到错误,试图find子弹目录。 林想知道如果也许我的环境variables设置错误。 我正在使用Windows Vista 32位,这里是我的环境variables: BULLET_ROOT:C:\ BulletPhys BULLET_INCLUDE_DIR:C:\ BulletPhys \ src 作为其他信息,我正在尝试在cMake中构建这些库。 子弹物理学建立完美,但ogrebullet无法find需要configuration的库(dynamic,碰撞,LinearMath等) 所以我的问题是:我将如何设置环境variables,所以ogrebullet可以find他们? 如果需要其他信息,我会根据要求提供。 谢谢 -Molma

提高植绒行为的性能?

我正在尝试制作一款游戏。 这是一个双棍射手,我想devise在屏幕上有一个很多(最多500)的敌人。 游戏的基础devise来源于“几何战争”,并作为学习体验。 有关我的设置:i7四核CPU @ 3.5GHz,8GB内存和英特尔4000集成显卡。 虽然这些不是最好的规格,但现在它们越来越普遍,所以这是我的目标系统。 有一架无形的飞机作为比赛场地。 我从这架飞机上建立了一个NavigationMesh,并从中随机抽取点来产生我的敌人。 敌人使用DetourCrowd来实现植绒行为。 在我的中等强大的机器上,我可以得到大约150个敌人,然后我开始经历剧烈的性能下降。 考虑到其他潜在的问题,我使我的敌人看不见,所以只有代理商被使用,而且我的机器上的150-200个敌人的performance仍然显着下降。 50个敌人的这个差距足够让我的帧率从一个稳定的60 fps降到<1 fps。 我决定改为尝试使用子弹物理。 我有线性/角度因素设置,使子弹作用于一个2D平面。 我所有的敌人现在都用一个球体进行碰撞,有一个单位,没有摩擦。 它们不受重力或外力的影响,而是在每个物理步骤开始时设定一个固定的冲量。 此外,碰撞面具的设置,使敌人只相互碰撞。 大约350-400个敌人,我开始看到性能问题。 它们并不像我在DetourCrowd看到的性能问题那么严重,但是它们确实带来了额外的负面影响。 我用一个小球体作为触发器来发射子弹。 我处理碰撞事件摧毁敌人。 使用DetourCrowd方法,这不会导致性能下降。 然而,使用Bullet方法会导致更显着的性能下降。 总的来说,我可以用DetourCrowd方法舒适地使用〜120-150个敌人,用Bullet方法可以使用200个敌人。 有没有什么解决scheme能给这个游戏带来更便宜的羊群行为? 我更喜欢针对2D的解决scheme,假设它比针对3D的解决scheme便宜。

Unity中的步枪子弹/投射物,光线投射或刚体?

你好再gamedevers :)我试图创建一个相当简单的FPS射击游戏。 我正在使用Unity的Rigidbody FPS控制器预制件。 我有一个步枪模型附加到该步枪的子弹产卵位置的进一步gameobject。 我可以在Editor看到, bulletSpawn对象已经知道它应该面对哪个方向(即Z axis指向正确的方向)。 除了手机游戏之外,我从来没有真正使用Raycasts来select屏幕上的物体,但是我的头脑告诉我,这可能是制作逼真子弹的最好方法。 我一直在阅读,特别是: http : //answers.unity3d.com/questions/22800/raycast-shooting.html 它建议使用Raycasts并且我知道如何从bulletSpawn调用一个射线,并设置它的方向,并查看它的命中。 但我不明白的是光线的传播速度有多快,以及如何限制光线的速度。 我不确定这是否是实现枪战的好方法,或者是否可以更好地创建addforce()和addforce() 。 你们总是非常乐于助人,而且通常会让我们更容易理解,通过几十个旧post和我不能总是遵循的文档。 如何达到这个效果?

在TPS中,如何将子弹瞄向相机指向的方向,但是从玩家进行拍摄?

(在C#/ XNA。)我的意思是,我找不到任何答案。 我试图学习如何制作第三人称射击游戏,特别是我在Epic Games的一款名为“MARS”游戏中find的游戏。 我不想重拍这个游戏,我只想了解第三人是如何工作的。 在那里,屏幕的目标是一个方向,有一个十字准线,其中心保持在旁边的球员,略高于肩膀。 玩家的目标就是屏幕所指向的方向。 我不明白的是,如果玩家没有瞄准相机的相同位置(或者是什么?),玩家射击的子弹如何朝这个方向发展? 现在,在我的游戏中,我只能select玩家面前的东西,拥有自己的观看方向(Vector3),跟随相机的WorldMatrix.Forward并将玩家的射线应用到该方向。 所以如果我改变摄像机的方向,玩家会按照摄像机的方向select他前面的东西。 如果我把十字准线放在屏幕的中央,玩家不会在那里射击,而是在自己的前方射击。 谢谢你的帮助。 我还在寻找,但即使在这里,我也找不到我想要的东西。 编辑:我发现在这个链接是如何使光线从相机出来。 但是,我应该旋转角色的视角方向,让它的光线走到相机的同一个角度? 所以光线就像这样:/ |。 编辑2:现在我正在testing一些代码。 我迄今创建的最接近的方式是这样的。 Game.ActiveCamera.FollowPosition = Player.Position; Game.ActiveCamera.FollowReference.Y = Player.Race.Height * 0.5f; Vector3 target = Player.Position; target.Y += Game.ActiveCamera.FollowReference.Y; target += (Player.ViewDirection * Game.ActiveCamera.FarPlaneDistance); //if (Game.Input.KeyHeld(Keys.F2)) // Game.ActiveCamera.Target = Game.ActiveCamera.Position + Game.ActiveCamera.WorldMatrix.Forward; //else Game.ActiveCamera.Target = target; //MathConverter.Convert(Player.Character.Body.Position + Player.Character.ViewDirection * […]

计算子弹旅行知道坐标和弧度

我有一个玩家精灵,有斧头和Y坐标,还有一个弧度。 弧度决定了精灵在自上而下的游戏界面中所面对的方式。 在这种情况下,弧度从玩家精灵指向鼠标光标,所以玩家总是面向鼠标。 我正在这样计算: this.radian = Math.atan2(inputs.mousey – this.ypos, inputs.mousex – this.xpos); 现在我想让玩家能够发射子弹。 子弹精灵是5×5像素,我希望它在玩家方向上直接从玩家手中射出(所以它基本上是朝着鼠标光标的方向射击)。 玩家发射的子弹被称为(方便) bullets的arrays。 这是一个二维数组,看起来像这样: var bullets = [ [xpos, ypos, radian], // first bullet [xpos, ypos, radian], // second bullet [xpos, ypos, radian] // third bullet ] 子弹将按照弧度确定的方向在每个游戏节拍上移动5个像素。 但是我很难为此做math。 我已经把子弹画在canvas上,我可以让它移动,但不知道如何使它跟随弧度指向的方向。 任何人都可以帮忙,也许是一个代码示例? 谢谢。

理解jBullet中的HingeConstraint

我正在使用BulletPhysics引擎jBullet的Java端口。 我想在两个三角形之间做一个关节,这样第一个边的一个边和第二个边的一个边就像一个铰链。 但是我不明白如何使用HingeConstraint类,因为它缺less文档 。 pivotInA和pivotInB是什么? 它们是铰链相对于物体中心的枢轴点吗? 而axisInA ? 它与axisInA什么不同? 对于两个三角形,我必须在铰链的两个边的中点上2个顶点或1个铰链约束? 我在哪里可以find一个简单的工作例子?

如何在libgdx中实现子弹物理

我是游戏开发新手,想知道如何在libgdx中实现子弹物理。 我在互联网上search了很多东西,但没有什么值得的。