Articles of box2d jbox2d

Box2d中的可渗透对象

在Box2d中,我可以使静态对象被dynamic对象所渗透吗? 我能模拟一些像水一样的东西,它可以让刚体潜入水中,但同时又会推迟它们吗? 这是我做的一个例子: 在稳定状态下的三个圈子在我的“游戏世界”里面有一定的引力。 我把顶部的圆圈向下推,底部的两个圆圈开始沉入墙壁,因为墙体是可渗透的。 一旦顶圈停止影响,墙壁就会慢慢地将圈子推回到世界。

JBox2D – 如何获得顶点位置?

我为jbox2d创建了一个三角形 public void createTri(){ PolygonDef shape = new PolygonDef(); shape.density = 2.0f; shape.friction = 0.8f; shape.restitution = 0.3f; shape.addVertex( new Vec2(35/RATE,35/RATE) ); shape.addVertex( new Vec2(65/RATE,35/RATE) ); shape.addVertex( new Vec2(45/RATE,55/RATE) ); BodyDef bodyDef = new BodyDef(); bodyDef.position.set(50/RATE, 50/RATE); bodyT= world.createBody(bodyDef); bodyT.createShape(shape); bodyT.setMassFromShapes(); } …但画在canvas上时,如何获得所有顶点的位置? 与bodyT.getPosition().x和.y我只能得到中心点。 谢谢!

在box2d中设置世界边界

到目前为止,我已经看到了在box2d世界上设置边界的唯一方法,即创建矩形形状并将它们放置在屏幕的边缘,还有其他方法吗? 也许我可以设定一些公式而不是形状的界限? 为什么我问:假设我的“世界”看起来像一个没有顶端约束的矩形框,所以任何对象最终都被限制在左侧,右侧和底部,但可以显得无限高。

在JBox2D中,与Body对象交互的正确位置在哪里? step()方法?

问题:在应用程序中,代码与Body对象进行交互的适当位置在哪里? 我的意思是“互动” 获取位置 确定行动 应用冲动 使用step()方法来处理交互是否合适? 我猜测对冲突的回应是在听众中完成的。 背景: 披露:我对JBox2D非常陌生,根本没有使用Box2D。 我在我的应用程序中使用Testbed JAR,以便我可以看到这个实体相互作用。 Body对象由简单的AI控制,而不是用户input。 我通过box2d v2.3.0用户手册浏览了解世界上的对象的基本知识。 我没有find任何提示决定逻辑的提示。

鼠标点击坐标不映射到Box2d世界

我在OpenGL中使用Java中的Box2d,试图检测鼠标是否点击了一个Body 。 但是无法将鼠标坐标映射到Box2d世界。 我在Box2d World有一个位于20.0f, 30.0f的物体,但发现这些坐标在我的视口中不可用? 当应用程序运行时,在canvas上单击以下位置并输出: [00:40:01] INFO (0.05,0.05) // top left corner [00:40:02] INFO (28.716667,0.05) // top right corner [00:40:06] INFO (28.666666,16.5) // bottom right corner [00:40:08] INFO (0.06666667,16.616667) // bottom left corner OpenGL有这个观点.. gl.glViewport(0, 0, getWindowWidth(), getWindowHeight()); gl.glMatrixMode(GL2.GL_PROJECTION); gl.glLoadIdentity(); gl.glOrthof( -45.0f * 60.0f, 45.0f * 60.0f, -45.0f * 60.0f, 45.0f * 60.0f, […]

寻求建议:与JBox2d碰撞自顶向下或等轴测图

我希望我能把这个尽可能的清楚! 目前正在进行一个动作角色扮演游戏,在很早的阶段,更多的只是基本的想法和写入。所以我将开始我的设置: 在LibGDX中使用Java使用TILEd样式的地图创建地图:等轴测图 碰撞引擎? …这是我需要一些指导和建议的地方。 LibGdx与Box2d链接在一起。 我个人喜欢使用Box2D,更多的是因为我在平台上玩过它,而且我喜欢它是如何以武力和冲动等方式运行的,但是,它似乎只是为平台式游戏而创建的。 所以我想一个问题是:Box2d的属性可以很容易地改变,以支持自上而下的碰撞系统或等距碰撞系统? 我曾试图通过将重力设置为零来实现Box2d从上到下的游戏,但没有引力,地图上的其他实体只是浮动。 (你碰到他们,他们刚刚开始…漂浮!) 我最初的想法是一旦我在TILEd中创建了我的地图,我就开始添加一个碰撞层(或单独修改这些图块)来标记什么是可通过的,哪些不是。 我曾经看过box2d的例子(只是平台),然后在TILEd中创建一个对象来标记可以碰撞的墙或地板,当它加载时会创建这些形状。 如果由于零重力而不是整个浮动实体,Box2d将是完美的。 所以我在找什么 1)有没有一种方法来创建Box2D工作的自上而下设置没有实体浮动? 2)如果不是,我还有什么其他的解决scheme? 如果有任何其他信息需要更好的响应请让我知道! 谢谢!

为什么我的Box2D主体只有在建立了新的关卡之后才与一种types的对象碰撞?

所以开发Android手机游戏,使用Android Studio和开发API 17,实现Box2D。 第一级 出于某种原因,第一级别的一切都运行正常: 当我完成第一个级别 – 仍然是好的: 第二级 这是发生问题的时候,在第二层,你可以看到左边的第一个玩家正方形(上面的,小的正方形)不会随着目标正方形(底部,更大的正方形)而消失: 这就是第二个玩家的方格已经经历了同样的第二个等级,并且它已经消失了: 我的级别之间转换的过程(这个函数是在我的关卡类): public void newLevel() { // Clear the current level. levelGenerator.clearLevel(); // Increment the current level number. levelNumber++; // Decide what levels I want here. if(levelNumber == 2) { // Generate a new level. levelGenerator = new LevelGenerator ( context, // Game context. world, […]

应用于Box2D机构的力量

在充分的透露,我是box2D非常新,更不用说它的Java版本。 我有一个箱子(这里是英雄型),我正试图移动。 我通过尝试应用如下武力来做到这一点… private void itterate() { Vec2 vec = hero.getPosition(); hero.applyForce(new Vec2(0, 100), hero.getPosition()); Vec2 vec2 = hero.getPosition(); String test = "TEst"; } 我看到的问题是这不改变这样的vec == vec2。 我也试过这个…. private void itterate() { Vec2 vec = hero.getPosition(); hero.applyForce(new Vec2(0, 100), hero.getWorldCenter()); Vec2 vec2 = hero.getPosition(); String test = "TEst"; } 似乎没有做我想要的东西。 如何将对象“推”到屏幕底部(增加y)? 更新我也试过这个… private void itterate(int […]

Box2D关系

据我所知,Box2D的单位是米。 当我使用Box2D处理JBox2D时,我将“世界大小”设置为setup()中指定的窗口大小。 现在我想知道是否有任何缩小世界的function。 例如,如何在一个房间内模拟网球的投掷,而不使用只有5 x 5像素的窗口? 另外,有没有像Java API这样的好文档?

JBox2D多边形碰撞代理奇怪

我一直在玩JBox2D和Slick2D,并用地面对象,盒子对象和两个不同的多边形做了一个小小的演示。 我面临的问题是多边形的碰撞检测似乎是closures的(见下图),但是盒子的碰撞工作正常。 我的代码: 主要类 package main; import org.jbox2d.common.Vec2; import org.jbox2d.dynamics.BodyType; import org.jbox2d.dynamics.World; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.BasicGameState; import org.newdawn.slick.state.StateBasedGame; import shapes.Box; import shapes.Polygon; public class State1 extends BasicGameState{ World world; int velocityIterations; int positionIterations; float pixelsPerMeter; int state; Box ground; Box box1; Polygon poly1; Polygon poly2; Renderer renderer; public State1(int state) { […]