【发布时间】:2014-12-29 19:27:35
【问题描述】:
我正在学习如何使用 box2d 和 andEngine。我正在尝试使我的精灵随着身体移动。我之前在 onCreateScene 中编写所有代码时让它工作,但现在我想为我的精灵创建一个单独的类。所以现在我的 onCreateScene 看起来像这样:
mScene = new Scene();
mScene.registerUpdateHandler(physicsWorld);
Kapsel kapselBialy = new Kapsel(100, 100, 100, 100, ResourceManager.getInstance().mBialyKapselRegion, getVertexBufferObjectManager(), physicsWorld);
mScene.registerTouchArea(kapselBialy);
mScene.setTouchAreaBindingOnActionDownEnabled(true);
mScene.attachChild(kapselBialy);
pOnCreateSceneCallback.onCreateSceneFinished(mScene);
我的 Kapsel 类看起来像这样:
public class Kapsel extends Sprite {
private Body body;
public Kapsel(float pX, float pY, float pWidth, float pHeight,
ITextureRegion pTextureRegion,
VertexBufferObjectManager pVertexBufferObjectManager, PhysicsWorld physicsWorld) {
super(pX, pY, pWidth, pHeight, pTextureRegion, pVertexBufferObjectManager);
createPhysics(physicsWorld);
}
//definiowanie zahchowań po dotyku
@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY){
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_UP){
body.setLinearVelocity(-((pSceneTouchEvent.getX()/32 - body.getPosition().x) * 10), -((pSceneTouchEvent.getY()/32 - body.getPosition().y) * 10));
}
return true;
}
//Tworzenie ciała i fizyki dla kapsla
private void createPhysics(PhysicsWorld physicsWorld){
body = PhysicsFactory.createCircleBody(physicsWorld, this, BodyType.DynamicBody, PhysicsFactory.createFixtureDef(1.0f, 0.5f, 0.5f));
physicsWorld.registerPhysicsConnector(new PhysicsConnector(this, body, true, true));
}
}
我的精灵正确显示,但触摸事件不起作用。我错过了什么吗?
【问题讨论】:
标签: java android touch andengine game-physics