非公開 座標ズレ修正

    @@ -1,6 +1,6 @@ /* - * @title 陣取り・エディタ - * @description 定型文を6つまで編集・保存します + * @title 座標ズレ修正パッチ + * @description PC、タブレットのタップずれ補正! * @private */ javascript:(function(){
  • /*
     * @title 座標ズレ修正パッチ
     * @description PC、タブレットのタップずれ補正!
     * @private
     */
    javascript:(function(){
        const canvas = document.querySelector('canvas');
        if(!canvas) return alert('Canvasが見つかりません');
    
        // 本家の入力イベントを横取りして座標を補正する関数
        const fixEvent = (e) => {
            const rect = canvas.getBoundingClientRect();
            // Canvasの解像度と表示サイズの比率を計算
            const scaleX = canvas.width / rect.width;
            const scaleY = canvas.height / rect.height;
            
            let clientX, clientY;
            if (e.touches && e.touches.length > 0) {
                clientX = e.touches[0].clientX;
                clientY = e.touches[0].clientY;
            } else {
                clientX = e.clientX;
                clientY = e.clientY;
            }
    
            // 余白(rect.left / top)を引いて、スケールを掛けることで「Canvas内の正確な位置」を出す
            const correctedX = (clientX - rect.left) * scaleX;
            const correctedY = (clientY - rect.top) * scaleY;
    
            // ゲーム側の内部変数(mouse.x, mouse.yなど)に無理やり書き込む
            // ※client-game.js内の変数名に合わせる必要があります。
            if(window.game && window.game.mouse) {
                window.game.mouse.x = correctedX;
                window.game.mouse.y = correctedY;
            }
        };
    
        // 全ての操作イベントに対して補正をかける
        ['mousedown', 'mousemove', 'touchstart', 'touchmove'].forEach(type => {
            window.addEventListener(type, fixEvent, true);
        });
    
        alert('座標補正パッチを適用しました!スティックの位置を確認してください。');
    })();
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。