我正在开发一个类似单词搜索的游戏。为此,我使用了 AndEngine,并使用了 TiledMap 来显示单词网格。在这个游戏中,我们需要连接字母来组成一个单词,当我们拖动手指时,它会在瓷砖上画线并在字母之间建立联系。我能够准确地垂直和水平地画线,但是当我尝试对角线画线时,它会到达附近的瓷砖并从最后触摸的瓷砖画线到附近的瓷砖。但是当我小心地移动到对角线瓷砖时,它会准确地画线。
谁能帮我解决这个问题?
e.g.
----------------
|1 2 3 4 |
|5 6 7 8 |
|9 10 11 12 |
|13 14 15 16 |
----------------
如上图所示
我能够为 画线"1234" & "159"
,这意味着所有水平和垂直位置都可以正常工作。但因为"963"
它不如我画的水平和垂直准确。
case TouchEvent.ACTION_MOVE:
xMove = pSceneTouchEvent.getX();
yMove = pSceneTouchEvent.getY();
TMXLayer tmxLayer1 = mTMXTiledMap.getTMXLayers().get(0);
TMXTile tmxTile1 = tmxLayer1.getTMXTileAt(xMove, yMove);
tmxTile1.setTextureRegion(mPlayerTextureRegion);
if (tmxTile1.getTileRow() == 1 && tmxTile1.getTileColumn() == 1) {
//letter M
xMove = pSceneTouchEvent.getX();
yMove = pSceneTouchEvent.getY();
//yMove = pSceneTouchEvent.getX();
if (xMove >= (TILESQUARE * 1)+20 && yMove >= (TILESQUARE * 1)+20) {//added
yMove = (TILESQUARE * 1) + 30;//gets x-cordinate of center
xMove = (TILESQUARE * 1) + 30;//gets y-cordinate of center
Log.i("On Action Move X11", ""+xMove);
Log.i("On Action Move Y11", ""+yMove);
//tmxTile1.setTextureRegion(mPlayerTextureRegion);
if (!addedAmazeM) {
addedAmazeM = true;
System.out.println("You are in (1,1) tile");
wordArray.add("M");
HashMap<Float, Float> moveXY = new HashMap<Float, Float>();
moveXY.put(xMove, yMove);
//linePath.add(moveXY);
Point tile11Pt = new Point();
tile11Pt.x = (int) xMove;
tile11Pt.y = (int) yMove;
linePoints.add(tile11Pt);
}
}
}