AndEngine/Box2D を使用して、Android OS でゲームを開発しています。ユーザーが画面に触れると、三角形の例を使用して三角形が作成されます。
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);
}
ただし、三角形の近くのタッチは登録されていません (ログを使用して発見したように)。つまり、使用可能な三角形で画面がすぐにいっぱいになります。青は三角形、赤はタッチが登録されていない場所です。
タッチがこれらの境界内に登録されない理由はありますか?
別の図を次に示します。
そのため、このようなシーンになる可能性があります。ユーザーが長押しすると、三角形のサイズが大きくなります。ユーザーが指を離すと、三角形の成長が止まり、画面の下部に落ちます。元の三角形は赤い三角形とほぼ同じサイズですが、「X」でマークされた領域にはタッチが登録されていません。