地図にカーソルを置く
[マインクラフト] [2014/01/13 11:20]
前回の記事で地図の描画方法を書いたが、
地図には他にもカーソルを置くことができる。
もっとも、カーソルを扱うMapCursorクラスはコンストラクタが既にDeprecated(非推奨)なので、
必要がなければあまり触らないほうがよいだろう。
カーソルを置くのはとても簡単で、MapCursorCollectionクラスに適当にカーソルをつっこんで
MapCanvasでsetCursorsすればよい。
(冗長なのでrender(…)メソッドだけ抜粋) //地図を描画する @Override public void render(MapView view, MapCanvas canvas, Player player) { MapCursorCollection cursors=new MapCursorCollection(); cursors.addCursor(new MapCursor((byte)32, (byte)16, (byte)0, MapCursor.Type.BLUE_POINTER.getValue(), true)); cursors.addCursor(new MapCursor((byte)32, (byte)32, (byte)2, MapCursor.Type.GREEN_POINTER.getValue(), true)); cursors.addCursor(new MapCursor((byte)32, (byte)48, (byte)4, MapCursor.Type.RED_POINTER.getValue(), true)); cursors.addCursor(new MapCursor((byte)32, (byte)64, (byte)6, MapCursor.Type.WHITE_CROSS.getValue(), true)); cursors.addCursor(new MapCursor((byte)32, (byte)90, (byte)8, MapCursor.Type.WHITE_POINTER.getValue(), true)); canvas.setCursors(cursors); }
理由はわからないが、どうやら地図にはカーソルを3~4個しか置くことができないようだ。
このため、コードでは5つのカーソルを一度に扱っているが、実際には上記の1枚目のスクリーンショットのように
自分が今いる場所と他に3つのカーソルだけしか表示されなかった。
スクリーンショットを2枚撮ったのは、一度に表示できなかった残り2つのカーソルをコードを書き換えて別に撮ったからだ。
MapCursorのコンストラクタに渡すカーソルの座標は、地図の中心が(0,0)で、左上が(-128,-128)になるようだ。
また、マップの縮尺を変更しても、左上は常に(-128,-128)だった。
MapCursorのコンストラクタの3つ目の引数はカーソルの向きで、ゼロだと下向きになり、以後時計周りに16方位を指定できる。
なぜDeprecatedなのか、なぜカーソルの表示数に上限があるのかわからないが、
カーソルの色や形はとてもわかりやすいので、うまく使えば宝探しやレーダーがわりに使うこともできそうだ。
この記事を評価
この記事にコメント
- ...