※下に添付したプラグイン PF_PointerLock.jsです。本来はポインターロックの機能を実装するプラグインにおまけでつけたのですが、便利なので本実装しようと考えています
プラグインの以下の箇所です
97行目~98行目
コード: 全て選択
//マウスの移動量を取得する。トリアコンタン氏のツクマテのアドバイスを参照。
var _TouchInput_onMouseMove = TouchInput._onMouseMove;
TouchInput._onMouseMove = function(event) {
_TouchInput_onMouseMove.apply(this, arguments);
//以下でマウスの画面座標をリアルタイムに取得
this.mouseX = Graphics.pageToCanvasX(event.pageX);
this.mouseY = Graphics.pageToCanvasY(event.pageY);
//以下でポインターロック時のマウス移動量を取得
this.mouseMovementX = event.movementX;
this.mouseMovementY = event.movementY;
//SRD_CameraCoreでマウス移動にカメラを追従させるとき、移動しすぎないように調整
this.cameraMoverX = Math.floor(TouchInput.mouseMovementX / 2);
this.cameraMoverY = Math.floor(TouchInput.mouseMovementY / 2);
//以下でマウスのカーソルがある場所のマップにおける座標を取得
//木製ペンギン氏のMPP_TouchCommandの処理を借りました
if(SceneManager._scene ? SceneManager._scene.constructor === Scene_Map : false){
this.mouseMapX = $gameMap.canvasToMapX(TouchInput.x) || 0; //97行目
this.mouseMapY = $gameMap.canvasToMapY(TouchInput.y) || 0; //98行目
}
};
これで概ね問題なく動作しているのですが、どうもゲームに負荷がかかっているとき(FPSが低下しているタイミング)?などにマップ移動をしたりゲームをリロードしたりすると同様のエラーがおこってしまうようでした。
SceneManager._scene ? SceneManager._scene.constructor === Scene_Map : false
という判定の仕方がそもそも間違っているのではないかというのは感じるのですが、ではどうすればいいかというのがいまいちわからず困っています。何かよい改善案があればご教示いただけると幸いです。