アイソメトリックマップが描画されています。LibGdx - スプライトをラインパスに従うようにする
私はスプライトの現在位置と私のスプライトが移動後にあるべき場所の目標位置取る:
// region is my TextureRegion.
int x1 = getIsometricX(1,1,region);
int x2 = getIsometricX(1,2,region);
int y1= getIsometricY(1,1,region);
int y2 = getIsometricY(1,2,region);
をそして私がローカル/対象かどうかを確認するためにShapeRenderer
を使用して簡単な線を描きますポイントが正しく設定され、スプライトレンダリングの開始位置がわかるように四角形が表示されます。
renderer.setProjectionMatrix(camera.combined);
renderer.begin(ShapeRenderer.ShapeType.Line);
renderer.setColor(Color.RED);
renderer.line(x1 + location.getOffsetx(), y1 + location.getOffsety(), x2 + location.getOffsetx(), y2 + location.getOffsety());
renderer.rect(x1 + location.getOffsetx(), y1 + location.getOffsety(), region.getRegionWidth(), region.getRegionHeight());
renderer.end();
鉱山のすべてのスプライトは、すべてのスプライトが異なるため、アイソメトリックタイル上の位置を調整するためにoffsetXとoffsetYを設定しています。
出力は次のようになります。あなたがここに見ることができるもの
、スプライトを描画する始まるの出発点である(あなたはオフセットがスプライトは、その上のように見えるので、それを調整していることがわかり1,1
タイル。
、あなたはスプライトの開始ドローポイントで開始し、スプライトのターゲット延伸点で終わるラインを見ることができます。
今私の質問は、そのスプライトをその行のパス上で動かすにはどうしたらいいですか?船が前進しているように見えますか?
そこで質問のメインコンセプトはどのようにポイントをターゲットに地元の点から、直線でのスプライトの移動を行うことができます。..のですか?あなたが見る必要があるかもしれません
いくつかの機能:
public int getIsometricX(int x, int y, TextureRegion region) {
return (x * GameTile.TILE_WIDTH/2) - (y * GameTile.TILE_WIDTH/2) - (region.getRegionWidth()/2);
}
public int getIsometricY(int x, int y, TextureRegion region) {
return (x * GameTile.TILE_HEIGHT/2) + (y * GameTile.TILE_HEIGHT/2) - (region.getRegionHeight()/2);
}
タイルがちょうどタイルの質感で、同じ方法を使用して描画されます。
はい、すべてのフレームを呼び出します。毎回xとyに1を加えた場合、それは実際には直線ではありません – Jony
しかし、yの差が0であれば、x軸上で増加して船が直線に移動します –