アイデアファーム
確認済み コメントOK

【マイネ王防衛軍】タッチ/クリックの判別方法のバグ?

提案内容

マイネ王防衛団がリリースされてからけっこう面白くてはまってしまいました。100位以内に入るのがきついです。
https://king.mineo.jp/game/defences/game

さて、同ゲームはマウスでも遊べることに気づいてスマホにマウスを接続して遊んでいるのですが、たまにタッチもしてしまいます。マウスがどこか行ってしまったり、ゲームを中断するときなど...
ゲーム中にマウスで操作した後にタッチも使う (タイミングは任意、プレイ中であることが必須) と、以下のエラーが出てきます。
GameScene.js:799
Uncaught TypeError: Cannot read properties of undefined (reading 'length')
at t.value (GameScene.js:799:70)
at a.emit (pixi.min.js:8:8962)
at e.dispatchEvent (pixi.min.js:8:187975)
at e.processPointerDown (pixi.min.js:8:190236)
at e.processInteractive (pixi.min.js:8:189099)
at e.processInteractive (pixi.min.js:8:188885)
at e.processInteractive (pixi.min.js:8:188885)
at e.processInteractive (pixi.min.js:8:188885)
at e.processInteractive (pixi.min.js:8:188885)
at e.onPointerDown (pixi.min.js:8:189797)]
もしくは
app.min.js:1 Uncaught TypeError: Cannot read properties of undefined (reading 'length')
at t.value (app.min.js:1:174912)
at a.emit (pixi.min.js:8:8962)
at e.dispatchEvent (pixi.min.js:8:187975)
at e.processPointerDown (pixi.min.js:8:190236)
at e.processInteractive (pixi.min.js:8:189099)
at e.processInteractive (pixi.min.js:8:188885)
at e.processInteractive (pixi.min.js:8:188885)
at e.processInteractive (pixi.min.js:8:188885)
at e.processInteractive (pixi.min.js:8:188885)
at e.onPointerDown (pixi.min.js:8:189797)

PixiJSには趣味のゲーム開発でお世話になっているのですが、タッチやクリックの種類を PIXI.InteractionData.pointerType : string で判定しようとするとなぜかタッチしたのにクリック("mouse")と返ってくることがあります。どうもこれに症状が似ている気がします。
かわりに
PIXI.InteractionData.originalEvent instanceOf MouseEvent
(MouseEvent | TouchEvent | PointerEvent で判別できます)
で判定してみてはいかがでしょうか?

他のブラウザで試していないのでなんともいえないのですが、再現できた環境は以下の通りです。
Google Pixel 6a, Google Chrome 107.0.5304.141
Windows 11, Google Chrome 106.0.5249.119 (64 ビット), Vivaldi 5.5.2805.48

メリット・デメリット

メリット:
とりあえずバグが解消される

デメリット:
instanceOf 演算子に置き換えたときの負荷(変わるのだろうか)


0 件のコメント
コメントはまだありません。

運営事務局からのお願い

マイネ王メンバーの皆さんからのコメントにより、アイデアの幅が広がったり、視点を変えることでより良いアイデアになります。基本毎週実施しているアイデア確認会では、皆さんからのコメントも参考にさせてもらっています。より良いアイデアにつながるようなポジティブなコメントをよろしくお願いします。

コメントするには、ログインまたはメンバー登録(無料)が必要です。