2013-07-25 66 views
0

我是AndEngine的新手,這真的是第一次嘗試在遊戲物理中使用觸摸事件。我在創建AndEngine教程系列之後創建了這段代碼。我創建了一個簡單地在地面上彈跳的精靈。我想要做的就是集成一個觸摸事件,以便用戶可以拾取精靈(放置在任何位置),然後讓它落到地面上。使用onAreaTouched與物理 - 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(); 

} 

回答

2

上先看看,你的觸摸事件向右看 - 一個遊戲,無需物理擴展。

在物理學,你不想觸碰/移動精靈本身,而是要移動的底層(不可見的)物理體 - 由您physicsengine處理的一個,即在碰撞是反應根據物理學負責移動你的精靈。

所以,你試圖讓它移動你的精靈而不是你的身體的錯誤方式。移動你的身體來看看鼠標接頭:

+0

感謝。這看起來很有趣。在Android中,我能夠通過簡單的觸摸事件來移動圖像,並且我認爲這將是AndEngine中的相同想法。我不知道這是一個完全不同的概念。 – David