0

我是 AndEngine 的新手。我使用animatedSprite 和Sprite 对象。我想在加速度计的基础上移动 Sprite,但我也不想移动 animatedSprite。我想要物理世界的实现

private void addBottomFace(final float pX, final float pY) {
    myBottomSticFace = new Sprite(pX, pY, myBottomStickTextureRegion);
    myBottomStickBody = PhysicsFactory.createBoxBody(this.myPhysicsWorld, myBottomSticFace, BodyType.DynamicBody, myFixtureDef);

    this.myScene.attachChild(myBottomSticFace);
    this.myPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(myBottomSticFace, myBottomStickBody, true, true));
}


@Override
public void onAccelerometerChanged(AccelerometerData pAccelerometerData) {
    final Vector2 gravity = Vector2Pool.obtain(pAccelerometerData.getX(), pAccelerometerData.getY());
    myBottomSticFace.setPosition(myBottomSticFace,getX() + pAccelerometerData.getX(), myBottomSticFace,getY());
    Vector2Pool.recycle(gravity);
}

使用此代码,mBottomSticFace 将根据加速度计移动,但身体不会移动。

4

1 回答 1

2

您应该创建两个不同的实体并将其附加到您的精灵。要移动的Body应该设置为BodyType.DynamicBody,另一个应该设置为BodyType.StaticBody。

要查看加速度计和主体示例,请查看: http ://code.google.com/p/andengineexamples/source/browse/src/org/anddev/andengine/examples/PhysicsExample.java

于 2012-04-12T17:50:43.450 回答