我是AndEngine的新手,这是第一次尝试在游戏物理中使用触摸事件。我在mybringback AndEngine教程系列之后创建了这段代码。我创造了一个只在地面上上下跳动的精灵。我想要做的是整合触摸事件,以便用户可以拿起精灵(将它放在任何地方),然后让它掉到地上。
我有一个上下反弹的精灵,所以这很好但我的触摸事件不起作用。我对onAreaTouched进行了一些研究,但我认为我仍然不了解一些概念。如果有人能告诉我我做错了什么,那将非常感激。
这是我的onPopulateScene:
@Override
public void onPopulateScene(Scene pScene,
OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception {
final Sprite sPlayer = new Sprite(CAMERA_WIDTH / 2,CAMERA_HEIGHT / 2,
playerTexureRegion, this.mEngine.getVertexBufferObjectManager()){
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y)
{
//Not sure if I'm doing this right
if (pSceneTouchEvent.isActionUp())
{
this.setPosition(X, Y);
}else if(pSceneTouchEvent.isActionDown())
{
this.setPosition(X, Y);
}else if(pSceneTouchEvent.isActionMove())
{
this.setPosition(X, Y);
}
return true;
};
};
sPlayer.setRotation(45.0f);
final FixtureDef PLAYER_FIX = PhysicsFactory.createFixtureDef(10.0f,
1.0f, 0.0f);
Body body = PhysicsFactory.createCircleBody(physicsWorld, sPlayer,
BodyType.DynamicBody, PLAYER_FIX);
//Set touch Area here
this.scene.registerTouchArea(sPlayer);
this.scene.attachChild(sPlayer);
physicsWorld.registerPhysicsConnector(new PhysicsConnector(sPlayer,
body, true, false));
pOnPopulateSceneCallback.onPopulateSceneFinished();
}
答案 0 :(得分:2)
初看起来,你的触摸事件看起来是正确的 - 对于没有物理扩展的游戏。
在物理学中,你不想触摸/移动精灵本身,而是想要移动底层(不可见)物理体 - 由物理发动机处理的物理体,它对碰撞和<做出反应/ em>负责根据物理特性移动你的精灵。
所以,你试图通过移动精灵而不是你的身体来改变它。移动你的身体看看鼠标关节: