Articles of box2d andengine

Box2D setGravity()在Andengine中?

我目前正在使用Andengine GLES20分支。 我知道新的Box2D方法setGravity()尚未实现。 有没有人管理尚未与Andengine一起工作,或写一个方法相同? 我真的需要Box2D的这个新function。 先谢谢你。

使主体(box2d)成为Android中的一个精灵(andengine)

我不能使body(box2d)成为精灵(andengine),同时将MoveModifier应用到精灵身上。 如果我可以做出正义的身体,它的工作,即精灵可以相撞。 如果我将MoveModifier应用于精灵,精灵可以移动到我想要的位置。 但是我想让body(它们可以碰撞)并且同时应用MoveModifier(它们可以移动到我想要的位置)。 我该怎么做? 这个我的代码只是同时运行MoveModifier而不是body。 circles[i] = new Sprite(startX, startY, textRegCircle[i]); body[i] = PhysicsFactory.createCircleBody(physicsWorld, circles[i], BodyType.DynamicBody, FIXTURE_DEF); physicsWorld.registerPhysicsConnector(new PhysicsConnector(circles[i], body[i], true, true)); circles[i].registerEntityModifier( (IEntityModifier) new SequenceEntityModifier ( new MoveModifier(10.0f, circles[i].getX(), circles[i].getX(), circles[i].getY(),CAMERA_HEIGHT+64.0f))); scene.getLastChild().attachChild(circles[i]); scene.registerUpdateHandler(physicsWorld);

如何使用Andengine将身体设置到特定的位置

我正在开发一个单人游戏和多人模式的游戏。 可以说我有墙(静态尸体),车辆(dynamic尸体)和子弹(dynamic尸体)。 使用vehicleBody.setLinearVelocity(velocityX, velocityY);来控制我自己的车辆是vehicleBody.setLinearVelocity(velocityX, velocityY); 。 车辆可以按预期与墙壁和子弹相撞。 现在我喜欢以多人模式移动敌方车辆。 当我使用相同的方法通过其速度值(在多人游戏模式下)移动车身时,车辆会非常快速地失去同步,这意味着它们在所有设备上的位置不一样,因为某些数据包丢失了。 我目前正在做的是以下几点: 在设备#1上: 1)我使用setLinearVelocity移动身体 2)然后我得到身体的X和Y位置,并发送数据包到另一个设备 在设备#2上: 3)我收到数据包并设置正文的位置。 我尝试了不同的方法,希望你能告诉我最好的方法或者我还没有尝试的方法: 使用vehicleBody.setTransform(…) : activity.runOnUpdateThread(new Runnable() { @Override public void run() { vehicleBody.setTransform(new Vector2(newPosX, newPosY), angle); } }); 我也试过使用MouseJoint (基于该教程 ),但不知何故身体随机弹跳到下一个位置。 有时候它的效果很好,但是当我重新开始游戏时,敌人的车辆又开始弹起来了。 也许我没有设置参数。 这是我用的: public MouseJoint createMouseJoint(float newPosX, float newPosY) { final float PIXEL_TO_METER_RATIO = PhysicsConstants.PIXEL_TO_METER_RATIO_DEFAULT; Vector2 v = vehicleBody.getWorldPoint( new […]

玩家不会在Box2D实现中跳跃

那么,我正在努力学习和发动。 我能够成功实现播放器的移动function。 现在,我试图让玩家使用Box2D跳跃。 我提到几个在线教程来做到这一点,但我不能让玩家跳。 这是我的代码: public class MyActivity extends BaseGameActivity { @Override public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception { scene = new Scene(); final float centerX = (CAMERA_WIDTH – back.getWidth()) / 2; final float centerY = (CAMERA_HEIGHT – this.back.getHeight()) / 2; Sprite backgr = new Sprite(centerX, centerY, back, this.getVertexBufferObjectManager()); rcs1 = new Sprite(85, 250, rc1, […]

获取灯具的位置

我正在使用多个Fixture构建一个Body (一个使用AndEngine的box2d体),后来我需要获得这些Fixture的世界位置。 目前我正在尝试这样的事情; // Declarations Body body; Fixture centerFixture; Fixture leftFixture; Vector2 centerPos = new Vector2(0, 0); Vector2 leftPos = new Vector2(-1.5f, -1.5f); void setup() { BodyDef bodyDef = new BodyDef(); bodyDef.type = BodyType.DynamicBody; bodyDef.position.set(new Vector2(10, 10)); body = physicsWorld.createBody(bodyDef); PolygonShape centerShape = new PolygonShape(); centerShape.setAsBox(1, 1, centerPos, 0); FixtureDef centerDef = new FixtureDef(); centerDef.density=1; […]

如何使用Box2D在AndEngine中设置重心?

我有一个场景,我可以像物理世界中设置引力 this.mPhysicsWorld = new PhysicsWorld(new Vector2(0, -SensorManager.GRAVITY_EARTH),false); 但我想所有的机构都倾向于一个点。 我试过了 physicsWorld.setGravity(new Vector2(centerX, centerY)); 但没有奏效 – 我假设,因为我需要计算向量的中心。 但我不知道如何做到这一点,在哪里计算,所以它改变。 我想input(的力量)来自精灵的触摸处理程序。 此时的精灵可以通过移动 @Override public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) { //this.setPosition(pSceneTouchEvent.getX() – this.getWidth() / 2, pSceneTouchEvent.getY() – this.getHeight() / 2); if (pSceneTouchEvent.isActionMove() || pSceneTouchEvent.isActionDown() || pSceneTouchEvent.isActionOutside()) { this.setX(pSceneTouchEvent.getX() – this.getWidth() / 4); this.setY(pSceneTouchEvent.getY() – this.getHeight() / 4); […]

如何在AndEngine中围绕自己的中心旋转图像?

我是Andengine框架的Android编程初学者。 而我的问题是: 如何在AndEngine中围绕自己的中心旋转图像? 我使用Body和AnimatedSprite。 更新 这是我的代码: final AnimatedSprite face; final Body body; face = new AnimatedSprite(pX, pY, this.mCircleFaceTextureRegion, this.getVertexBufferObjectManager()); body = PhysicsFactory.createCircleBody(this.mPhysicsWorld, face, BodyType.DynamicBody, FIXTURE_DEF); face.setUserData(body); face.animate(200); face.applyTorque(100); face.setUserData("monster"); this.mScene.registerTouchArea(face); this.mScene.attachChild(face); this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(face, body, true, true)); 而且在ContactListener的这里与其他对象发生冲突。 private ContactListener createContactListener() { ContactListener contactListener = null; contactListener = new ContactListener() { @Override public void beginContact(Contact contact) […]

我如何计算逻辑速度/方向?

我有一个简单的jBox2D(Java)实现一个世界上的几个圆体,在开始时是静态的。 我想让他们移动时,用户触摸的圆圈。 但是我希望它们可以从被触摸的点移动到它的逻辑速度方向。 如何在触摸之后设置身体的速度/方向,使其移动到与触摸合乎逻辑的点? 10倍

AndEngine Box2d游戏

我正在开发一个使用Box2d扩展的2D生存射击游戏,我有一些问题: 我有两个AnalogOnScreenControls。 他们的听众修改了精灵和身体。 我收到TouchEventPool was exhausted ,随着他们的数量增长,游戏崩溃意外。 我试图把修改的身体和精灵的UpdateThread,但是这并不能解决问题。 可能是什么原因? 我有一个在游戏初始阶段加载所有纹理的类。 重新启动游戏活动几次后,我收到Unable to find Phys Addr for和“绿色”界面。 但是,如果在重新启动之前通过任务管理器手动清除内存,则不会发生什么情况? 我在游戏结束时卸载了我的地图集。 游戏有时会崩溃在onResumeGame的NullPointerExceptionexception。 建议的解决scheme是设置android:configChanges =“orientation | screenSize”,但是我的设备是API 10,所以它没有screenSize属性和方向只是似乎没有帮助,因为游戏开始时肖像模式(虽然景观在代码中设置)

获取身体的位置

我正在使用BodyA.getPosition().x和BodyA.getPosition().y来获取身体位置的x和y向量,所以我可以附加一些文本的头部,但该位置的log打印出像3.666757…. 我希望这个文本在身体移动时移动,所以它应该始终相对于身体的位置,直到被移除。 目前当我尝试使用这个 speech = new TickerText( 0, 0, font, ptext, new TickerText.TickerTextOptions( 10 ), ResourceManager.getInstance().vertexManager ); speech.setBlendFunction( GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA ); speech.setScale( 0.5f ); speech.setAutoWrapWidth( 500f ); speech.setAutoWrap( AutoWrap.WORDS ); speech.setPosition( xVal, yVal );` 文本没有显示在屏幕上的屏幕上,我认为它的X和Y位置是错误的,因为当我手动设置X和Y到我知道的位置时,它将显示在屏幕上。 我正在寻找帮助,因为如何在屏幕上获得身体的实际X和Y坐标,所以我可以让文本跟随正文。