Articles of jbox2d

哪个.jar有JBox2d的p5包?

使用Eclipse,我试图编写一个简单的hello世界程序,只需在屏幕上绘制一个矩形,然后按照本教程中的说明将它放下。 问题是,当我尝试导入p5包时,它不能parsing,所以我不能声明我的物理对象。 我试了两件事。 下载zip,解压缩,然后导入3个jar(库,序列化和testing平台) 一个。 import org.jbox2d.p5。*; 不解决,但其他人做 湾 物理物理; 没有解决 下载较旧的独立testing平台的jar,然后导入它 一个。 物理物理; 不解决; 这里基本上是我开始的地方 import org.jbox2d.util.nonconvex.*; import org.jbox2d.dynamics.contacts.*; import org.jbox2d.testbed.*; import org.jbox2d.collision.*; import org.jbox2d.common.*; import org.jbox2d.dynamics.joints.*; import org.jbox2d.p5.*; import org.jbox2d.dynamics.*; import processing.core.PApplet; public class MyFirstJBox2d extends PApplet { Physics physics; public void setup() { size(640,480); frameRate(60); initScene(); } public void draw() { background(0); […]

在Box2D平台游戏中,在“陡坡”上“跑步”

我见过很多页面谈论如何在Box2D上模拟一个平台游戏,特别是关于人们不想滑下斜坡的方法。 那么,我的问题是不同的,我很惊讶,我不能find关于它的职位/解决scheme。 当我有一个非常陡峭的斜坡,我遇到了这个问题。 这是发生了什么事情: 作为一个普通的平台英雄夹具的方形,因为在Box2D平台游戏中,运动基于施加冲动或设置速度,当我“移动”这样一个斜坡时,会发生什么情况,就像im推动它一样,从而产生垂直力所以正方形向上移动(特别是因为摩擦为0,以避免“粘在墙上”的东西)。 我已经解决了Box2D的大部分非平台熟练的问题。 这个似乎难以解决。 那么,如何避免我的物体在被推向斜坡时爬上一个陡峭的斜坡,而是因为它太陡而不能爬升而滑下来呢?

我如何获得Jbox2D中静态物体的位置?

我想在JBox2D中获得一个静态body的位置,我该怎么做?

如何在Andengine中创建Fixture并为其分配用户数据?

我正在学习本教程: 如何使用JBox2D ContactListener来检查我的角色是否站在地面上? 以便从玩家的底部获得包括玩家主体中的夹具的input。 我的问题是,我正在像这样初始化FixtureDef: body = PhysicsFactory.createBoxBody(physicsWorld, this,BodyType.DynamicBody,PhysicsFactory.createFixtureDef(0,0, 0)); body.setUserData("player"); body.setFixedRotation(true); // create the bottom sensor final FixtureDef footSensor = PhysicsFactory.createFixtureDef(0, 0, 0); footSensor.isSensor = true; body.createFixture(footSensor); 现在我不能这样做:footSensor.setUserdata(“传感器”),因为只有Fixture类有这个方法。 我如何初始化Fixture类以包含用户数据? 谢谢。

JBox2D机构不会碰撞?

我有两个对象。 一个dynamic的玩家和一个静态的地面物体。 这是工作了一段时间,直到我做了一些重构,突然间我的戏剧通过我的地面对象下降。 以下有什么明显的错误吗? 我不知道什么可能是错的,所以如果你以前经历过这个,请赐教! 这是对象的初始化代码: (pixelsPerMeter是10) int pixelsPerMeter = Game.instance.pixelsPerMeter; //create body def BodyDef boxDef = new BodyDef(); boxDef.position.set(0, 0); boxDef.type = BodyType.DYNAMIC; //create shape PolygonShape boxShape = new PolygonShape(); boxShape.setAsBox(this.size.width / pixelsPerMeter, this.size.height / pixelsPerMeter); //create body body = Game.instance.world.createBody(boxDef); //finally create the fixture FixtureDef boxFixture = new FixtureDef(); boxFixture.density = 1; boxFixture.shape […]

Box2D的相对运动(防止物体脱落)

我正在创造一个围绕太阳绕行星的游戏,就像这样: 棕色的方形是地球,围绕着它的中心和太阳旋转。 黄色的广场是太阳,它不动。 现在想象一个站在行星上的玩家,行星以20米/秒的速度移动。 如何防止玩家脱落? 我必须让玩家知道地球不动。 我在地球上工作的重力,但我不知道我怎么能保持球员在这个星球上! 到目前为止,我已经考虑过两种解决scheme 只要在播放器上应用行星的角速度和线速度(如果它在指定的半径内),我认为这种方法会引起抖动/毛刺。 为地球创建一个单独的Box2D世界,并通过旋转/平移地球来渲染这个Box2D世界。 这个方法很复杂,但是如果玩家离开这个星球,它会增加在不同世界之间移动物体的问题。 这张图解释说: 我认为有另一种(更好的)方法来解决这个问题,但我还没有find解决scheme。

Box2D和Slick2D:graphics错误

错误 以水平线表示的物理场。 物体静止不动,似乎假装地面较低。 这是因为形状的中心位置不正确,或者因为我正在改变它的不正确。 这是一个用相同的系统显示的立方体,而中心位于对象的中心。 它行为正确,但这可能是因为它的对称性。 当我查看涉及凸多边形和静态平面的模拟时,形状似乎围绕不在其质心处的点旋转。 我自己写了绘图代码,如下所示。 更具体地说,请参阅渲染函数,该函数将绘制Box2D世界中的所有对象。 错误的一个可能的位置是在我正在转换graphics对象的代码中,另一个是当我创建和转换我将绘制的Slick2D Shape时。 什么是造成我的graphics故障? 以下是有关程序的来源。 重要提示:此代码是完全可编译和自包含的。 如果你有jBox2D和Slick2D ,你可以编译和运行它。 请注意,要使用jBox2D,您必须添加一些slf4j软件包(slf4j-api和slf4j-nop,如果您只是想快速的话)。 package junk; import org.jbox2d.collision.shapes.CircleShape; import org.jbox2d.collision.shapes.PolygonShape; import org.jbox2d.collision.shapes.ShapeType; import org.jbox2d.common.MathUtils; import org.jbox2d.common.Vec2; import org.jbox2d.dynamics.Body; import org.jbox2d.dynamics.BodyDef; import org.jbox2d.dynamics.BodyType; import org.jbox2d.dynamics.Fixture; import org.jbox2d.dynamics.World; import org.newdawn.slick.AppGameContainer; import org.newdawn.slick.BasicGame; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.geom.Polygon; import org.newdawn.slick.geom.Transform; public class […]

Box2d的世界宽高比与屏幕的宽和高有关

我有看法,例如扩展SurfaceView的GameView 。 我在GameView中整合了Box2D物理。 我有两个宽度, GameView宽度,高度和Box2D物理世界的宽度,高度。 我需要用GameView坐标来获得box2d世界的位置。 例如, 屏幕总宽度= 240屏幕总高度= 320 屏幕点需要映射到box2d坐标(x,y)= 127,139 为此,我需要获得Box2d物理世界的最大宽度和高度。 有什么方法可以获得Box2d世界的最大宽度和高度? 要么 我可以限制在屏幕分辨率的box2d世界的宽度和高度。

为什么我的Box2d机体不会碰撞?

当我尝试使用jBox2d&Slick2d获取物体碰撞时,我做错了什么。 这里只是我的基本的初始化,更新和渲染方法。 渲染和更新似乎对绘图工作正常(重力有效地将球推下,如果施加冲击,将会旋转)。 我有一种感觉,我在创造边缘时忽略了一些东西,但我不知道是什么。 我的形状/身体在testing平台中工作正常,但是我在独立应用程序中没有运气。 我已经尝试过移动边缘的身体/球体,但它似乎没有任何效果。 @Override public void init(GameContainer gc, StateBasedGame sbg) throws SlickException { world = new World(new Vec2(0F, 9.8F), false); windowCenter = new Vec2(gc.getWidth() / 2, gc.getHeight() / 2); circleShape.m_radius = CONSTANTS.BALL_RADIUS * CONSTANTS.SCALE_FACTOR; circleFixtureDef.shape = circleShape; circleFixtureDef.density = 1f; circleFixtureDef.restitution = .6f; circleBodyDef.type = BodyType.DYNAMIC; circleBodyDef.bullet = true; circleBodyDef.position.set(windowCenter); circleBody = […]

获取TOISolver ArrayIndexOutOfBoundsException创建一个基于图块的游戏

我一直在使用jBox2D在java上制作基于瓦片的游戏。为了向物理世界中添加瓦片,我使用存储在更新ArrayList(我使用PhysicBlock类作为包装)中的静态物体。 每当我调用body.setTransform(…)时,只有一半的块被添加(它们之间总是有一个块间隔)。当我尝试在它们之间或之下插入块时,我得到以下当一个dynamic的身体碰撞他们中的任何一个: Exception in thread "Thread-2" java.lang.ArrayIndexOutOfBoundsException: 8 at org.jbox2d.dynamics.contacts.TOISolver.initialize(TOISolver.java:99) at org.jbox2d.dynamics.World.solveTOI(World.java:1235) at org.jbox2d.dynamics.World.solveTOI(World.java:1053) at org.jbox2d.dynamics.World.step(World.java:565) at org.projectez.world.World.updateActiveBlocks(World.java:40) at org.projectez.world.World.update(World.java:94) at org.projectez.core.UpdateThread.update(Core.java:117) at org.projectez.core.UpdateThread.run(Core.java:87) at java.lang.Thread.run(Unknown Source) 世界级的片段(不是jbox2d世界,这个类代表游戏中的所有块和GameObjects,它有jbox2d世界作为一个字段: … public ArrayList<PhysicBlock> activeBlocks=new ArrayList<PhysicBlock>(); public World(int x,int y) { worldX=x;worldY=y; } public void updateActiveBlocks() { physWorld.step(1/100f,2, 2); for(PhysicBlock pb : activeBlocks) { pb.nullify(); } int counter […]