という場合に
コード: 全て選択
this.locate($gameMap.canvasToMapX(TouchInput.x),$gameMap.canvasToMapY(TouchInput.y))
スクリプトで計算できる方法はありますでしょうか?
※トリアコンタン様の半歩移動プラグインを使用し、this.locate()で0.5刻みで瞬間移動できる事は確認済みです。
コード: 全て選択
this.locate($gameMap.canvasToMapX(TouchInput.x),$gameMap.canvasToMapY(TouchInput.y))
コード: 全て選択
(() => {
'use strict';
function Game_Map_HalfLocateMixIn(gameMap) {
gameMap.canvasToMapXHalf = function (x) {
const tileWidth = this.tileWidth();
const originX = this._displayX * tileWidth;
const mapX = Math.floor(2 * (originX + x) / tileWidth);
return this.roundX(mapX)/2;
};
gameMap.canvasToMapYHalf = function (y) {
const tileHeight = this.tileHeight();
const originY = this._displayY * tileHeight;
const mapY = Math.floor(2 * (originY + y) / tileHeight);
return this.roundY(mapY) / 2;
};
}
Game_Map_HalfLocateMixIn(Game_Map.prototype);
})();
Plasma Dark さんが書きました:canvasToMapX, canvasToMapY の結果を0.5刻みで取得するようなメソッドを定義して、それを使うようにするのが手っ取り早そうです。
こんな感じのプラグインを書けば、 $gameMap.canvasToMapXHalf などとして利用できます。コード: 全て選択
(() => { 'use strict'; function Game_Map_HalfLocateMixIn(gameMap) { gameMap.canvasToMapXHalf = function (x) { const tileWidth = this.tileWidth(); const originX = this._displayX * tileWidth; const mapX = Math.floor(2 * (originX + x) / tileWidth); return this.roundX(mapX)/2; }; gameMap.canvasToMapYHalf = function (y) { const tileHeight = this.tileHeight(); const originY = this._displayY * tileHeight; const mapY = Math.floor(2 * (originY + y) / tileHeight); return this.roundY(mapY) / 2; }; } Game_Map_HalfLocateMixIn(Game_Map.prototype); })();