Questions tagged «box2d»

Box2D是用C ++编写的开放源代码的2D游戏物理刚体物理仿真库,带有多种语言的端口

5
好的2D Platformer物理[关闭]
我为Box2D的2D平台游戏者设置了基本的角色控制器,并且我开始对其进行调整以使其感觉良好。物理引擎有很多旋钮需要调整,我不清楚,我是第一次使用物理引擎编写,我应该使用哪种。跳跃应该施加力几次tick吗?一时冲动?直接设定速度?如何在不消除化身的所有摩擦的情况下阻止化身粘在墙上(或者我消除了所有的摩擦,但仅限于空中)?我应该将角色塑造成胶囊吗?有圆角的盒子吗?一个有两个轮子的盒子?只是一个大轮子?我觉得以前一定有人做过! 在网络上,似乎只有很少的资源不是“婴儿的第一物理学”,这一切都切断了我希望有人已经解决了这些问题的地方。用于平台游戏的物理引擎的大多数示例都具有浮动感控件,空中跳跃或当临时穿透力过高时容易利用的行为等。 我的意思的一些例子: 轻按一下跳会跳很短距离;长按会跳得更高。 高速停止或反转方向时打滑短。 稳定地站在斜坡上(但在避开时可能会滑下)。 使用模拟控制器时的模拟速度。 所有其他将优秀平台游戏者与劣质平台游戏者区分开的事物。 我敢说,稳定的移动平台吗? 我并不是真正在寻找“嘿,这样做”。显然,正确的做法取决于我在游戏中想要的东西。但是我希望某个地方的人经历了各种可能性,并说“技术A的X很好,技术B的Y很好,但是不适用于C”,或者除了“如果(key = = space)character.impulse(0,1)“
76 box2d  physics  input 

6
Box2D是否有其他JS端口?
我一直在考虑为HTML5创建自上而下的2D汽车游戏。对于我的第一个游戏,我编写了物理原理,并碰撞了自己。但是对于这个游戏,我想使用一些现成的库。 我发现了Box2D及其JS端口。 http://box2d-js.sourceforge.net 它看起来像是很老的港口,制造于2008年。它缺乏当前Box2D的许多功能,还是它有重大问题?还有其他选择吗?

5
2D绳索碰撞检测
我想创建一条可以与以下youtube视频中的对象碰撞的绳索: 2D游戏物理绳 我认为您要实现Verlet集成,该集成使用点并将这些点与线连接起来。我试图弄清楚您将对绳索应用哪种类型的碰撞检测以在视频中获得效果。 我在想您必须对每个点做一些CD。我想使用box2D,所以我想知道使每个点都成为刚体起作用吗?任何意见,将不胜感激。

1
如何用矩形块制作曲面?
对于类似Peggle的游戏,我要制作遵循曲线的块,如下所示: 然后,当球击中障碍物时,障碍物将消失。 我设法水平绘制了一些,但是在使它们遵循一条路径时遇到了麻烦: 我该怎么做呢?是否需要使用自定义顶点创建Box2D对象?

3
您如何在2物理引擎(如farseer / box2d)中遵循AI路径?
我正在将自己一直在努力的2d自上而下游戏移植到像Farseer这样的合适的刚体物理引擎中。到现在为止,我只是在需要的地方才编写了自己的物理代码。 我正在尝试在这里学习正确的做事方式。 一旦在物理引擎内部使它们成为刚体,使AI遵循设定路径的正确方法是什么? 如果我在地图上有需要AI遵循的导航节点路径,那么以前,我会通过沿下一个步骤计算它们应位于的下一个位置并将其手动设置为该位置来手动沿路径移动它们。 但是现在它们是刚体,容易受到碰撞以及任何可能撞击它们并将其击落的力。 因此,为了使AI向前迈进,我相信我现在应该向它们施加冲动/力量了吗?我不应该再手动设置每个帧的位置。 因此,我认为我需要从一个确定性世界出发,在这个世界中,我必须迫使AI严格遵循一个不确定性世界,在这种情况下,如果受到撞击,它们可能会在任何方向被撞倒,我只是将它们轻推到路径中的下一个节点让他们动起来。 是对的吗?那是别人怎么做的吗? 这就引发了一些问题,即如何避免您的AI一直走在不正确的道路上,而又如何避免它们卡在风光的拐角处?你们如何处理这种事情呢? 还是以某种方式将两者混合并让您的AI通过手动设置其位置而遵循固定的路径,并且仅在您可以轻松控制的某些情况下对其他作用力做出反应,才更好呢? 感谢您的任何建议。

4
Box2D获取物体的边界框
在Box2D中,我很好奇是否有可能获得世界上已经创建的物体的边界框。 因此,基本上,人体是被创造的,它与世界等相互作用。我需要那个身体的边界框。可能吗?
12 physics  box2d 

1
由于网络集成,我是否应该编写自己的物理引擎?
我目前正在开发自上而下的实时僵尸射击游戏。我正在使用JBox2D作为我的物理引擎用Java编写此代码。我本周一直在编写网络代码,现在可以进行物理同步了​​。 我打算使用预测性客户端/权威服务器模型,只要服务器稍后批准,客户端就可以自由移动。这涉及到客户端向服务器发送包含运动数据的数据包,服务器计算延迟,并从较早的状态重新模拟环境。 我的问题是,我当前的物理引擎JBox2D(基本上是Box2D的端口)不支持回滚世界,而且显然不容易序列化世界数据。我有2个解决方案,可以修改/扩展当前的物理引擎,也可以编写自己的引擎。 编写我自己的物理引擎的原因- 我可以删除不必要的功能。在自上而下的游戏中,我真的只需要碰撞机制和处理力。不涉及重力。 我可以更好地理解代码,并且[最有可能]更容易实现回滚功能 扩展/修改JBox2D的原因 编写我自己的物理引擎将是大量的工作,可能会很麻烦 JBox2D有一个广泛支持的社区,可以为我的开发人员提供帮助 JBox2D针对碰撞检测等方面进行了特定的优化,使其非常有用 已经完成了一些工作,但是几乎没有共享代码 那您有什么意见。这是我的第一款游戏,我绝对不是专业的游戏开发商。如果有人可以提供一些指向该地区已经完成的工作的链接(最好使用JBox2D / Box2D / Java)。

2
使用Box2D多边形“ Set()”函数?
我正在使用Box2D物理引擎。box2D有一种形状,称为b2PolygonShape。 在此类中,您可以创建多边形。还有一个Set()函数,该函数接受点数组和顶点数。 Box2D有这样的示例: // This defines a triangle in CCW order. b2Vec2 vertices[3]; vertices[0].Set(0.0f, 0.0f); vertices[1].Set(1.0f, 0.0f); vertices[2].Set(0.0f, 1.0f); int32 count = 3; b2PolygonShape polygon; polygon.Set(vertices, count); 这可行。但是,当我尝试练习并弄混此功能时,我这样做是: b2Vec2 vertices[4]; vertices[0].Set(0, 0); vertices[1].Set(0,10); vertices[2].Set(10,10); vertices[3].Set(10,0); int32 count = 4; b2PolygonShape polygon; polygon.Set(vertices, count); 当我编译并运行它时,它在Set()函数之后崩溃了。这不会创建正方形吗? 同样在控制台中,我得到了: Assertion failed: s > 0.0f …
11 2d  physics  box2d 

5
壁架爬升动画和移动(二维平台游戏)
努力为物理驱动的2D平台游戏平台实施壁架攀爬机械师做出决策。避免过于复杂的最佳方法是什么? 到目前为止,我了解(这里的爱好者不是专业人士)有几种选择,包括: 在y轴上对刚体施加受控的力,直到根部位置刚好在手部位置上方,然后在x轴上施加足够的力,以使角色站立在平台上。同时以某种方式将其与爬升动画同步。 备注:在这里运动很容易,甚至可以通过棱柱形滑动关节进行控制,但是我不确定如何使动画(脊柱)与运动保持同步。 驱动角色根部位置的根动画。完成后传送刚体,并希望box2d仍能及时对任何碰撞(如果有任何物体从天上掉落)做出适当响应。 备注:听起来实际上更容易制作动画,但是不确定我是否会在spine运行时,box2d或更高版本的移动平台和不同高度的平台上遇到任何问题。 以编程方式在手上应用IK约束以将其锁定在适当位置,然后继续手动旋转骨骼或应用小的预设(少量关键帧/帧)动画,同时将所需的力施加到刚体上。 备注:似乎这样可以最大程度地控制播放器,但是对于我来说,在我的水平上实现它听起来很复杂,而不是确切地确定从哪里开始。 预先感谢您的任何投入! 仅供参考:这是一个带box2d的基于ECS(libgdx + Ashley)的引擎。壁架抓斗已经实现为一个单独的系统,因此我们在这里可以假定角色已经能够从任何高度的壁架上悬挂下来。
11 2d  libgdx  box2d  spine 

4
在Box2D(libGDX)中创建近战武器
我正在努力实现一种近战武器,该武器可以在按下键时摆动。 我正在想象两种不同的攻击方式(刺和挥杆) 我尝试创建两个固定装置(角色+武器),两个不同的物体,两个不同的物体+旋转关节,但是我无法对其进行编码,使其行为符合我的想象。 刺: 因此,只要按一下按钮,身体/固定装置(传感器)就会出现约1秒钟,然后消失(或者,身体/固定装置始终可以位于英雄身上,并且在按下时围绕顶点旋转90度,并且然后旋转回正常) 摇摆: 同样,但是现在武器将从顶部开始向下旋转。武器也将成为传感器。 我尝试过的 我创建了两个动态物体。 武器必须跟随英雄,因此我使用了旋转关节将它们固定在一起。当按键时,我将武器的角速度设置为一个数字。但是,放开钥匙后,武器将继续旋转。我尝试执行if检查(如果角度大于___,请将角速度设置为零)。但是,这仅意味着当我再次按下该键时,武器将停止旋转。
10 java  libgdx  box2d 

1
如何模拟box2d中的羽毛掉落?
我正在使用具有Box2d扩展名的AndEngine,但是一般的回答或概念性想法也将受到赞赏。 我希望在2D侧视图世界中有类似羽毛的对象,因此希望成为物理模拟的一部分。我正在使用线性阻尼使“羽毛”缓慢下降。这可能不是一个好主意,也许我应该在每次更新中都施加一些力,但是尽管如此,它仍然有效,并且使对象看起来“轻盈”,并且感觉好像空气中有阻力。 现在如何使物体看起来像羽毛一样从空中掉下来? 具体来说,我正在寻找两种类型的物体:低密度的长物体,应以缓慢的摆动向下移动,以及会随机改变轨迹的方形物体。如果这可以是一种模拟,并且长度可以作为参数,那就太好了-对象越长,摆动就越大。现在,我想在卡通世界中模拟羽毛,树叶和雪花。
10 box2d  physics 

2
为了学习Bullet,将Bullet用于2D物理而不是Box2D是否值得?
问题不多了。我并不担心开销,因为我确信它们都可以满足我的需求。基本上,由于Farseer物理引擎,我对Box2D概念很熟悉,但是当我跳到3D东西时,我想使用Bullet。也许Bullet即使在2D领域对我也具有一定的教育价值? 这个问题的一般版本是:如果我计划将来使用3D物理引擎,是否应该对2D游戏使用3D物理引擎?还是这是浪费时间而没有提供教育价值?

2
在重力世界中使角色沿着弯曲的斜坡移动
我看过这个游戏 花式裤子2。除了物理和精美的动画外,我注意到的是角色正在沿着斜坡甚至弯曲的斜坡运动。我对Box2d的经验很少,但是这种弯曲坡度的概念对我来说是新的。如果有人在这个概念及其实现方面对我有所启发,那将对我有很大的帮助。即使该实现不在box2d中,它也是受欢迎的。

4
Box2D检查点是否与物体相交
有没有办法检查一个点是否与物体相交? 例如,假设世界上有一个身体处于(100,100)的位置。 有没有办法检查(100,100)点是否与该物体相交? 另一个示例与名为“ PHUN”的游戏有关。在PHUN中,您可以单击并拖动身体。您如何检查鼠标点是否与身体相交?
10 2d  physics  box2d 

3
发生碰撞时如何删除box2d实体?
我对Java和android编程还是很陌生,遇到碰撞时要移除对象有很多麻烦。我在网上四处张望,发现在碰撞检测(接触侦听器)期间,我绝不应该删除BOX2D主体,而应将对象添加到arraylist并在主体的“用户数据”部分中设置一个变量以删除或不删除并处理更新处理程序中的删除操作。因此,我这样做了:首先,我定义了两个ArrayList,一个用于面部,一个用于主体: ArrayList<Sprite> myFaces = new ArrayList<Sprite>(); ArrayList<Body> myBodies = new ArrayList<Body>(); 然后,当我创建一个面并将该面连接到其主体时,我将其添加到其ArrayList中,如下所示: face = new AnimatedSprite(pX, pY, pWidth, pHeight, this.mBoxFaceTextureRegion); Body BoxBody = PhysicsFactory.createBoxBody(mPhysicsWorld, face, BodyType.DynamicBody, objectFixtureDef); mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(face, BoxBody, true, true)); myFaces.add(face); myBodies.add(BoxBody); 现在,我在onloadscene中添加了一个联系人监听器和一个更新处理程序,如下所示: this.mPhysicsWorld.setContactListener(new ContactListener() { private AnimatedSprite face2; @Override public void beginContact(final Contact pContact) { } @Override …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.