2012-07-29 43 views
1

我使用AndEngine/Box2D在Android OS上開發遊戲。當用戶觸摸屏幕時,它會用三角例如一個三角形:觸摸未在三角形附近註冊(Box2D)?

private static Body createTriangleBody(final PhysicsWorld pPhysicsWorld, final IAreaShape pAreaShape, final BodyType pBodyType, final FixtureDef pFixtureDef) { 
    /* Remember that the vertices are relative to the center-coordinates of the Shape. */ 
    final float halfWidth = pAreaShape.getWidthScaled() * 0.5f/PIXEL_TO_METER_RATIO_DEFAULT; 
    final float halfHeight = pAreaShape.getHeightScaled() * 0.5f/PIXEL_TO_METER_RATIO_DEFAULT; 

    final float top = -halfHeight; 
    final float bottom = halfHeight; 
    final float left = -halfHeight; 
    final float centerX = 0; 
    final float right = halfWidth; 

    final Vector2[] vertices = { 
      new Vector2(centerX, top), 
      new Vector2(right, bottom), 
      new Vector2(left, bottom) 
    }; 

    return PhysicsFactory.createPolygonBody(pPhysicsWorld, pAreaShape, vertices, pBodyType, pFixtureDef); 
} 

然而,三角附近的觸摸未註冊(因爲我發現使用日誌),這意味着你填滿屏幕可用三角形相當快。藍色是三角形,紅色的是對觸摸沒有被註冊:

enter image description here

爲什麼觸摸沒有在這些範圍內註冊的任何想法?

這裏是另一個圖: enter image description here

讓現場可能最終看起來像這樣。隨着用戶按壓並保持,三角形的尺寸增加。當用戶舉起手指時,三角形停止增長並落到屏幕的底部。即使原始三角形大致爲紅色三角形的大小,觸摸也不會在標有'X'的區域中註冊。

回答

0

使用OnAreaTouchListener檢測對象的觸摸,使用OnSceneTouchListener檢測外部對象的觸摸 - 這是您需要用來檢測紅色區域內的觸摸的對象。

+0

是...通過在OnSceneTouchListener中運行Log語句,觸摸未在紅色區域中註冊,這在技術上位於三角形的邊界之外。我想知道是否有關於在紋理區域周圍創建矩形的固定裝置有什麼用處。 – rphello101 2012-07-31 00:51:13

+0

因此,紅色區域沒有被OnSceneTouchListener或OnAreaTouchListener註冊?它不應該與夾具有任何關係,觸摸處理是AndEngine的一部分。 – JohnEye 2012-07-31 08:26:59

+0

正確,既不登記。在我移除一個物體但未取消註冊觸摸區域之前,我遇到了同樣的問題。在這種情況下,既不接觸也不登記。但我並沒有刪除任何東西。 – rphello101 2012-07-31 16:38:54