単語検索のようなゲームを開発しています。これには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);
}
}
}